*编辑2:我刚刚发现这是compiz+java GUI问题。这显然发生在这两个元素相交的地方。我正在运行最新的Ubuntu11.04(经典桌面,而不是统一)的所有更新。这个问题发生在Sun和OpenJDK上。它与使用窗口相关--规则Compiz插件--这是我需要使用的。
正如下面的注释中所述,我以前验证了我的控件被添加到正确的线程中。现在我发现禁用Compiz窗口规则插件解决了我的问题。由于我需要使用插件,我正在寻找一个解决方案。
原始文章:我正在开发一个Java应用程序。它是用NetBeans 6.9建造的。它使用GridBagLayout管理器。目前的外观和感觉是Nimbus (但这似乎对我将要描述的问题没有任何影响)。大多数用户在Linux上运行这个应用程序。一些人使用Windows。大多数情况下,该应用程序运行良好。但是,在没有GUI按钮的情况下,视图会在任意时间打开。例如,可能缺少“保存”和“取消”按钮。其他GUI元素通常都会出现(虽然我听说视图完全是空的,没有GUI元素--只是一个空的灰色窗口)。
如果用户在上角用"X“关闭该视图并简单地重新打开它,它将被正确绘制。缺少按钮的问题发生的时间不到1%。关闭/重新打开序列修复了几乎100%的时间。(如果我没有记错的话,可能需要第二次关闭/重新打开。)
通常,如果缺少一些按钮,则其他元素仍将正确绘制。这并不影响整个视图(表单)。它似乎影响了最底层的面板,但我不确定这是否是一个可重复的模式。这是很难复制的。我每天都在使用这个软件,而且我每个月只看到一次。一些用户更频繁地看到它,但它仍然是罕见的。
没有错误消息。我不知道下一步该做什么。这种行为一直存在于不同的计算机、不同的Linux发行版(尽管它们都基于Debian),以及许多不同的代码更改,包括更改布局管理器。(我们以前使用过NetBeans GUI设计器。)有什么想法吗?
编辑: 2011.07.05这是代码一般的样子:
public void show_some_view() {
setTitle(...)
setLayout(new GridBagLayout());
JPanel butnPanel = new JPanel();
butnPanel.setLayout(new GridBagLayout());
try {
//add stuff to panels (butnPanel, etc.)
} catch (Exception e) {
Logger.log(e);
}
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
int[] wh = ApplicationContext.get().getDisplayWidthxHeight();
setSize(wh[0], wh[1]);
setFocusable(true);
setVisible(true);
}发布于 2012-01-18 22:02:09
我也有同样的问题:有时我的JMenu不会画画(也在Ubuntu11.04上)。我只是加了一个
menuBar.setVisible(false);
menuBar.setVisible(true);添加到我的代码中,就在我将它添加到我的JFrame (它被设置为可见)之后。我知道这很麻烦,但它解决了我的问题,所以我不介意。希望这能有所帮助!
https://stackoverflow.com/questions/6449101
复制相似问题