【发布时间】:2015-01-06 04:46:36
【问题描述】:
我的问题是,当我按下按钮时应该调用paintComponent然后应该在JPanel上绘制一个图形,不幸的是paintComponent在程序加载时绘制图形,在这种情况下按钮是无用的。
我制作了一个小版本的程序,以便轻松快速地阅读和检测问题。 这里的代码不是原始代码,但它演示了同样的问题。
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;
public class TestPaint extends JPanel implements ActionListener {
private JButton button_1 = new JButton( "Draw Oval" );
public TestPaint() {
add(button_1);
}
@Override
public void actionPerformed(ActionEvent e) {
if ( e.getSource() == button_1 )
repaint();
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawOval(10, 10, 100, 100);
}
}
运行程序
import javax.swing.JFrame;
public class RunPaint {
public static void main(String[] args) {
TestPaint paint_g = new TestPaint();
JFrame frame = new JFrame("Testing");
frame.add(paint_g);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setVisible(true);
}
}
【问题讨论】:
-
“我的问题是,..” 好的,但您的实际问题是什么?例如,如果问题是 “为什么在我在代码中调用
repaint()之前 GUI 会绘制?”,在我看来,这两个答案都没有直接解决这个问题,至少在链接被关注之前没有.. 但同样,..你的问题是什么? -
Andrew Thompson 先生,我希望您花更多的时间阅读我的帖子,而不是写评论,也许到那时您就会明白我的问题是什么。
-
"..也许你会弄清楚我的问题是什么。" 我为什么要费心去尝试呢?毕竟,有很多人提出的问题我们甚至都不必考虑他们的问题是什么,因为他们小心翼翼地形成并提出了一个具体的问题。祝你好运……
标签: java swing paintcomponent