我对Java Graphics比较陌生。我想在用户单击JButton时在JPanel中的(X,Y)坐标处绘制20 x 80矩形。 (其中'X'和'Y'来自2个JTextFields。)
我已经阅读了很多问题和教程,但无法解决问题。在某些情况下,我可以绘制矩形但不能在不清空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);
}
答案 0 :(得分:1)
你的ActionListener代码是错误的。您不想创建新面板,您想要将Rectangle添加到现有面板。
创建GUI时,您应该向GUI添加两个面板:
addRectangle(...)
之类的方法,以便面板可以绘制矩形。查看Custom Painting Approaches了解自定义绘画的两种常用方法: