gpt4 book ai didi

java 。通过单击按钮绘制形状的问题

转载 作者:行者123 更新时间:2023-12-01 15:51:13 29 4
gpt4 key购买 nike

美好的一天。

我开发的程序在用户单击按钮时必须显示一些形状。至少它没有表现出来。怎么了?代码是:

public class ShowFrame extends JFrame
{
public ShowFrame()
{
this.setTitle("Show data"); //Title
this.setSize( DEF_WIDTH, DEF_HEIGHT ); //Size of frame
this.setResizable(false);

//...

JButton testButton = new JButton("Test");
buttonPanel.add(testButton);
this.add(buttonPanel, BorderLayout.SOUTH);


testButton.addActionListener( new ActionListener() { //Add listener
public void actionPerformed(ActionEvent e) {
DrawStuff stuff = new DrawStuff(); //Create class which draws shapes
add(stuff, BorderLayout.CENTER);
System.out.println("Test Button");
}
} );
}

public static final int DEF_WIDTH = 600;
public static final int DEF_HEIGHT = 400;

private JPanel buttonPanel = new JPanel();
}

绘制形状的类:

public class DrawStuff extends JComponent
{
public void paintComponent( Graphics g )
{
Graphics2D g2 = (Graphics2D) g;
//...
Rectangle2D rect = new Rectangle2D.Double(leftX, topY, width, height);
Line2D line = new Line2D.Double(leftX, topY, 0, 0);
//...
g2.draw(rect);
g2.draw(line);
//...
}

}

最佳答案

当您在可见 GUI 上添加/删除组件时,代码应该是:

panel.add(...);
panel.revalidate();
panel.repaint();

每次单击按钮时添加一个新面板的设计并不是很好。

相反,您应该创建一个自定义绘画面板并重写paintComponent()方法。然后,当您单击按钮时,您会调用自定义组件中的方法来设置要绘制的形状。 PaintComponent() 方法应该足够智能来绘制形状。然后在面板上调用 repaint()。

阅读 Swing 教程中关于 Custom Painting 的部分了解更多信息和工作示例。

关于 java 。通过单击按钮绘制形状的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5992881/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com