繁体   English   中英

如何从按钮单击事件在JPanel中绘制矩形

[英]How to draw rectangle in JPanel from button click event

我对Java Graphics比较陌生。 当用户单击JButton时,我想在JPanel中的(X,Y)坐标处绘制20 x 80矩形。 (其中“ X”和“ Y”来自2个JTextField)。

我已经阅读了许多问题和教程,但无法解决问题。 在某些情况下,我可以绘制矩形,但是在不清空JPanel的情况下不能绘制新的矩形。

在此处输入图片说明

这是我的代码:

public class CustomPanel extends JPanel {
      @Override
      public void paintComponent(Graphics g) {
        super.paintComponent(g); // first draw a clear/empty panel
        g.draw3DRect(Integer.parseInt(x.getText()),Integer.parseInt(y.getText()), 20, 80, true);
        // then draw using your custom logic.
      }
    }

/**
 * Initialize the contents of the frame.
 */
private void initialize() {
   //Code for frame 
   //Code for JTextfields x and y   

    JButton btnDraw = new JButton("Draw");
    btnDraw.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
                panel= new CustomPanel();


                panel.setBounds(406, 59, 407, 297);
                frame.getContentPane().add(panel);
                frame.revalidate();
        }
    });
    btnDraw.setBounds(286, 339, 89, 23);
    frame.getContentPane().add(btnDraw);



}

您的ActionListener代码错误。 您不想创建新面板,而是想将Rectangle添加到现有面板。

创建GUI时,应在GUI中添加两个面板:

  1. 第一个面板将是一个空面板,它将进行您的自定义绘画。 您通常会将其添加到框架的CENTER
  2. 第二个面板将包含“绘制”按钮。 通常,您可以将此面板添加到PAGE_END。 然后,当您单击“绘制”按钮时,将在自定义绘制面板中调用诸如addRectangle(...)类的方法,以便该面板可以绘制Rectangle。

查看“ 自定义绘画方法”,以了解两种常见的自定义绘画方法

  1. 保留要绘制的对象列表,然后在paintComponent()方法中迭代每个对象的绘制。
  2. 创建一个BufferedImage,然后将Rectangle绘制到BufferedImage上,然后可以在JLabel或paintComponent()方法中绘制BufferedImage。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM