Tag: paintcomponent

我如何将JButton放在图像上?

我正在尝试修复一个JFrame,其中将有一个背景图像,并在图像JButtons上将执行一些命令。 我尝试在没有布局的情况下进行,因为我想在JFrame的某些特定位置放置小按钮,但每次我这样做时,背景图像都会出现在前面,或者JFrame的大小等于JFrame大小。 使用以下代码,JButton与JFrame具有相同的大小。 我试图改变JButton的大小和位置,但没有。 你能帮我吗? 这是代码 public final class Test extends JComponent { private Image background; private JFrame frame; private Dimension dimension; public Test() { dimension = new Dimension(15, 15); frame = new JFrame(“Iphone”); frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(this); frame.setBounds(641, 0, 344, 655); frame.setVisible(true); test = displayButton(“tigka”); frame.getContentPane().add(test); } public void update(Graphics g) { paint(g); } public […]

在Swing里面的BufferedImage中绘画

我正在研究用java编写的绘图应用程序并遇到一些(更多)问题。 我有一个gui和一个工作程序(有点),我唯一的问题是用户绘制的线条和图形不会被保存(在绘制下一个之后消失)。 从过去的问题我了解到,我将需要使用BufferedImage来存储图形,然后在我的paint类中绘制它。 我的问题是,任何人都可以提供如何使用bufferedimage来存储和绘制绘图的基本解释/示例,如果需要,我将如何将绘制线的颜色和粗细传递到存储的数组中。 那就是全class同学。 package javapaint; import java.awt.*; import javax.swing.*; public class JavaPaintUI extends javax.swing.JFrame { /** Creates new form JavaPaintUI */ public JavaPaintUI() { initComponents(); } // private void initComponents() { buttonGroup1 = new javax.swing.ButtonGroup(); buttonGroup2 = new javax.swing.ButtonGroup(); jPanel4 = new javax.swing.JPanel(); jRadioButton9 = new javax.swing.JRadioButton(); jRadioButton10 = new javax.swing.JRadioButton(); jSlider2 = […]

JPanel Graphics清除和重新绘制?

我有一个带有paintComponent()函数的JPanel 。 我会调用一次,然后当用户点击不同的JButton ,我会设置一些标志,并希望再次调用此函数,因为它会在设置标志后稍微有所不同。 所以这就是我想知道的:如何从paintComponent清除现有的东西? 要重绘,我只是再次调用paintComponent吗? 目前我正在尝试以下方法: flag2 = true; repaint(); //I expect (want) paintComponent to be called again 在paint组件中,我做的事情如下: if (flag2==true) { g.drawRect(…); } else { g.drawLine(…); } 但通过测试,似乎我正在做的事情有问题。 谢谢你的帮助。

Java:将背景图像添加到框架

可能重复: java摇摆背景图像 在帧上绘制自己的缓冲图像 我正在尝试在我的框架中添加背景图像,但我没有做过任何工作。 我设计了一个老虎机,由几个面板组成,添加到容器中。 现在,我正在尝试为框架添加一个漂亮的背景。 我尝试使用paint方法。 但是,由于我已经使用绘画方法来绘制卷轴图像,因此它不适用于背景。 我也试过添加一个JLabel,但是当我这样做时会覆盖所有内容或被覆盖,具体取决于我如何调用它。 以下是我的代码; 任何帮助都感激不尽: import javax.swing.event.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; import sun.audio.*; public class SlotMachine extends JFrame { private Container c = getContentPane(); private ImageIcon handleIcon = new ImageIcon(“starWars/slot-handle.png”); private ImageIcon quitIcon = new ImageIcon(“starWars/quit2.jpg”); private ImageIcon logoIcon = new ImageIcon(“starWars/logo3.jpg”); private ImageIcon BG […]

关于在java中绘制多边形

嗨,我正在努力提高自己的java2D,首先我正在处理绘制多边形。 但是,我无法在框架上看到多边形。 我阅读了一些教程和示例,但正如我所说,我面临着问题。 这是绘制多边形的示例代码; import java.awt.Color; import java.awt.Graphics; import java.awt.Polygon; import javax.swing.JFrame; public class jRisk extends JFrame { private JFrame mainMap; private Polygon poly; public jRisk(){ initComponents(); } private void initComponents(){ mainMap = new JFrame(); mainMap.setSize(800, 600); mainMap.setResizable(false); mainMap.setVisible(true); mainMap.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); int xPoly[] = {150,250,325,375,450,275,100}; int yPoly[] = {150,100,125,225,250,375,300}; poly = new Polygon(xPoly, yPoly, xPoly.length); } […]

为什么gif动画在paintComponent()中使用它时没有动画?

我正在使用paintComponent()在JPanel的背景上绘制一个gif动画图像。 它显示了gif但没有动画。 我使用java 1.5,我知道我可以使用带有图标的标签。 有没有人知道为什么以及如何解决它? private static class CirclePanel extends JPanel { ImageIcon imageIcon = new ImageIcon(BarcodeModel.class.getResource(“verify.gif”)); Point point = f.getLocation(); protected void paintComponent(Graphics g) { Graphics gc = g.create(); Graphics2D g2d = (Graphics2D) g.create(); g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3f)); g2d.setColor(Color.BLUE); g2d.drawImage(imageIcon.getImage(), getWidth() / 2, getHeight() / 2, null); g2d.drawRect(0, 0, getWidth(), getHeight()); g2d.setStroke(new BasicStroke(10f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER)); g2d.setFont(g.getFont().deriveFont(Font.BOLD […]

Java JPanel getGraphics()

由于Java仅支持single inheritance ,因此我希望直接在作为类Panel成员的JPanel实例上paint 。 我从成员那里获取了一个Graphics实例,然后将我想要的任何东西绘制成它。 我怎么能不inheritanceJComponent或JPanel并仍然使用getGraphics()来绘制this而不重写public void paintComponent(Graphics g) ? private class Panel { private JPanel panel; private Grahics g; public Panel() { panel = new JPanel(); } public void draw() { g = panel.getGraphics(); g.setColor(Color.CYAN); g.draw(Some Component); panel.repaint(); } } 该面板被添加到JFrame ,该JFrame在调用panel.draw()之前可见。 这种方法对我不起作用,虽然我已经知道如何通过inheritanceJPanel并重写public void paintComponent(Graphics g)来绘制自定义组件,但我不想从JPanelinheritance。

在调整Jframe大小之前,JPanel不会更新

我将JPanel子类化为覆盖paintComponent(Graphics),我想在jframe中将图像绘制到jpanel上。 但是在我改变jframe的大小之前,我的图像还没有显示出来。 这是我的代码: public class ImagePanel extends JPanel{ public void setImage(BufferedImage bi) { image = bi; revalidate(); } @Override public void paintComponent(Graphics g) { super.paintComponent(g); if(image != null) { g.drawImage(image, 0, 0, this); } } }

JPanel图像从屏幕上飞过

我正试图让我的Pedestrian物体移动,它会移动,但在某一点它会飞离屏幕。 Pedestrian按点List移动。 首先将Pedestrian添加到toDraw以绘制它,并在startAndCreateTimer循环通过相同的列表来移动startAndCreateTimer可能是因为这行i = (double) diff / (double) playTime; 我实际上不想设置游戏时间如何不这样做,这可能是问题还是别的什么? 这里有一个与Pedestrian飞走的地方的链接(从左环岛的北边开始) http://gyazo.com/23171a6106c88f1ba8ca438598ff4153 。 class Surface extends JPanel{ Track track=new Track(); public List toDraw = new ArrayList(); private Long startTime; private long playTime = 4000; private double i; public Surface(){ startAndCreateTimer(); } @Override public void paintComponent(Graphics g) { super.paintComponent(g); //Make sure the track is painted first […]

java什么比较重:Canvas或paintComponent()?

有人能告诉我在JPanel上绘制图形应该用什么: Canvas ,或者只是在paintComponent()绘制所有内容? 我每秒约30次绘制数百个小图像,我想知道哪一个是最轻量级的,我应该在什么条件下使用它们? 谢谢。