是否用了awt和swing的混合界面?
解决方案 »
- eclipse 里面 如果一个类 没有main函数如何 让他生成一个.CLASS文件?
- 怎么样实现GUI界面和下载代码联系起来 通过按一个按钮就能实现下载 用监听器是吧
- 抽象的问题怎么理解?
- 怎么让键盘事件在整个Frame上响应啊?
- 有人能说下x=x+4和x+=4的区别吗?
- thinking in java 上的代码,顺便散分
- effective java中文版 和Practical Java中文版 的电子版(大陆术语版)的哪里有下载啊?我想大家都需要。
- sdk 搭配 什么版本的jdk
- 请问在java里面如何调用系统当前的时间?
- String的+是不是像c++一样重载运算符?
- 编译出这个问题又是怎么回事?
- 关于字符串加密的疑问
若没有,多线程应该不会对界面造成负面影响.
你这种情况一般是其中混有awt组件把swing组件挡住了.
可能是某次你打开菜单的过程中,画面被更新了。just try:)
可以在更新时,判断菜单的情况,如果打开,让它收回去。
右边是一个JTREE,里面有什么小型机,硬盘等等4个NODE的,右面是对应的4个JTABLE在同一个FRAME里面,4个监控线程同时在RUN,并且一直在更新JTABLE,这时点击一个TREENODE,对应的JTABLE会VISIBLE,而其他都INVISIBLE,这些其实都跟菜单无关啊!!!现在是菜单有问题!
《JTOOLBAR 》
-------------——————————————————————
| JTree | JPane(include 4 JTable) |
| 硬盘 | 只有一个TABLE可见 |
| 交换机 | |
| 小型机 | | ---------> Splitpane
| 内存 | |
| | |
| | |
—————————————————————————————
右边是一个JTREE,里面有什么小型机,硬盘等等4个NODE的,右面是对应的4个JTABLE在同一个JPANE里面,4个监控线程同时在RUN,并且一直在更新JTABLE 的 TABLE MODEL,这时点击一个TREENODE,对应的JTABLE会VISIBLE(这里仅仅调用了JTABLE的setVisible()函数,没有其他的更新命令),而其他都INVISIBLE,这些其实都跟菜单无关啊!!!现在是菜单有问题!现在的问题是,点击日志菜单,看不见有下拉菜单弹出(实际已弹出),因为我点击日志以后再点击JTREE那杂位置(这个位置的菜单项应该是“导出”),导出会被执行。再次感谢。
但是现在JMENUBAR 和JTOOLBAR都是在JFRAME里面,可以也不会出现你说的情况。
如果是的话,建议使用SwingUtilities.invokeLater()来执行.
谢谢
就会出现你的这个现象。估计是画面的更新跟不上,导致出问题建议:
画面进行更新时,出模态的提示框(确保这时没有其他操作),
提示正在更新数据,更新结束后关闭这个框。
这样应该可以:frame--你的应用程序框架
frame.setVisible(true);
JJTOOLBAR和菜单哪一个在前面?
JFrame中树和报表用的是JSplitPane吗?
局部刷新也可以用repaint(x,y,width,height);
如:
EventQueue.invokeLater( new Runnable (){
public void run() {
label.setVisible(false); //Your code here.
}
});
1.在需要界面刷新数据的地方,尽量开新线程来做
2.有使用Model的组件,尽量更新Model数据后,使用组件的repaint()来刷新,因为在多个调用repaint后,jvm会合并repaint()操作,比较节省资源
3.有组件大小或者位置变动的使用valide,invalide,来通知容器和子组件调整自身位置.
其实上面这些经验说白了就是不要试图获取控制UI的主动权,而是使用一些方式通知UI有了改变,然后UI重绘再回调用户方法重画,这样就不会出问题了.