Mou*_*inX 2 java user-interface swing
*编辑2:我刚刚发现这是一个compiz + java GUI问题.它显然发生在这两个元素相交的地方.我正在运行最新的Ubuntu 11.04(经典桌面,而非Unity)以及所有更新.Sun java和OpenJDK都会出现问题.它与使用Window-Rules Compiz插件有关 - 我需要使用它.
如下面的评论中所述,我之前已经验证我的控件已添加到正确的线程中.现在我发现禁用Compiz Window-Rules插件可以解决我的问题.由于我需要使用该插件,我正在寻找解决方案.*
原帖:我正在研究Java swing应用程序.它是使用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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1902 次 |
| 最近记录: |