【发布时间】:2015-10-27 02:31:19
【问题描述】:
当我运行这段代码时,我看不到椭圆,我只能看到一个空白框。
我知道我可以使用paintComponent(Graphics g) 方法,但我很好奇
知道为什么我的代码不起作用。
public class Check {
public static void main(String[] args) {
Check c = new Check();
c.init();
}
public void init() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(3);
JPanel panel = new JPanel();
frame.setSize(new Dimension(800, 600));
frame.setTitle("Test");
frame.setVisible(true);
frame.getContentPane().add(panel);
Graphics2D g = (Graphics2D)panel.getGraphics();
g.setColor(Color.BLUE);
g.fillOval(50, 50, 50, 50);
}
【问题讨论】:
-
只是一个猜测,但我认为
panel添加了大小 0x0 -
重新打开了问题,因为重复的链接没有回答问题,并且发布的示例不是一个很好的示例,因为 GUI 不是在 EDT 上创建的,并且自定义绘画没有覆盖 getPreferredSize()。 Custom Painting 上的 Swing 教程通过重写
paintComponent()和 `getPreferredSize() 方法并将所有代码放在事件调度线程上,展示了更好的方法。 -
@Gimby,很高兴你同意我的回答。
-
“谢谢大家帮助我!顺序是问题..” 这个问题不适合放置答案!它应该进入下面的单独答案(是的,您可以回答您自己的问题)。顺便说一句 - 除非自定义绘画代码已经完全重新设计,否则问题并没有真正得到解决。