我有以下代码:
private void ConvertButtonActionPerformed(java.awt.event.ActionEvent evt) {
getContentPane().setBackground(new Color(50, 100, 200));
Graphics g = getGraphics();
g.drawString("tekst", 120, 120);
g.drawLine(175, 175, 140, 140);
g.setColor(Color.yellow);
g.fillOval(190, 120, 160, 160);
g.setColor(Color.red);
g.drawRoundRect(190, 110, 150, 120, 115, 115);
}
我希望它以适当的方式(在按下按钮后)绘制表单,但发生的情况是它在第一次单击后仅绘制背景,在第二次单击后绘制其余对象。当我尝试这种方法时,使用重写的paint方法:
public void paint(Graphics g){
setBackground(new Color(50, 100, 200));
g.drawString("tekst", 120, 120);
g.drawLine(175, 175, 140, 140);
g.setColor(Color.yellow);
g.fillOval(190, 120, 160, 160);
g.setColor(Color.red);
g.drawRoundRect(190, 110, 150, 120, 115, 115);
}
并拥有
private void ConvertButtonActionPerformed(java.awt.event.ActionEvent evt) {
repaint();
}
然后背景是灰色而不是蓝色,并且按钮消失(仅在我将鼠标悬停在它上面后才会出现)。
所以,最后我的问题是:这两个例子到底有什么问题(我想了解两个,因为这只是一个学习练习,我想知道发生了什么,而不是简单地找到解决方案),以及哪种方法更好?在此先感谢,我希望我没有错过这个网站上的类似问题,如果我错过了,我很抱歉!