摇摆重绘问题

时间:2012-02-28 18:43:20

标签: java swing user-interface

我正在使用Abeille Forms Designer作为我的Swing应用程序的WYSIWYG编辑器。我已经使用这个工具创建了一个test.jfpr文件,然后我将其导入Eclipse项目并放入类路径。然后我只创建一个JFrame使用该文件作为其FormPanel,当应用程序启动时 - 瞧 - 你有一个非常漂亮的GUI,无需编程。我喜欢它!

唯一的问题是,当应用程序加载时,“客户端区域”(Windows术语)中没有任何内容正在绘制 - 菜单栏以及屏幕的主要内容。

当我调整JFrame窗口的大小时,所有内容都立即绘制/绘制并且看起来很棒。

如果我再做一些事情(选择菜单项等)应该更改主屏幕,则没有任何反应。但如果我调整窗口大小,那么 bam !我看到更改生效了。

对我而言,这似乎是一个绘画/重绘问题,我的应用程序逻辑与我创建的Abeille表单之间存在脱节。

有没有办法 - 在Swing中 - 以编程方式强制整个窗口(客户端和非客户端区域)重绘/刷新?如果没有,那么是否有人知道这里发生了什么?提前谢谢!

3 个答案:

答案 0 :(得分:3)

除了mKorbel的建议,

  • 确认您正在event dispatch thread上构建GUI。

  • 确保在在封闭的setVisible()上调用pack()后仅调用 {。}}。

答案 1 :(得分:1)

1)you have a very nice looking GUI that took zero programming effort. I love it!

2)If I then do something (selecting a menu item, etc.) that should change the main screen, nothing happens. But if I resize the window, then bam! I see the changes take effect.

3)Is there a way - in Swing - to programmatically force the entire window (client- and non-client areas alike) to repaint/refresh?

4)If not, then does anybody have an idea as to what is happening here?

答案 2 :(得分:0)

您可以在菜单上注册actionListener。菜单例程完成后,请调用相应组件上的repaint函数。

可能需要一些额外的工作来避免闪烁。