不是不显示,是拖动窗口就会出现,不拖动就不会
时间: 2024-03-25 16:41:18 浏览: 6
这种情况可能是由于JMenu的位置没有被正确地计算而导致的。你可以尝试使用以下代码来强制JMenu在正确的位置显示:
```
menuBar.addHierarchyListener(new HierarchyListener() {
public void hierarchyChanged(HierarchyEvent e) {
if ((e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED) != 0
&& menuBar.isShowing()) {
menuBar.repaint();
}
}
});
```
这段代码会监听JMenuBar的层次变化事件,当JMenuBar显示出来时,会强制重新绘制JMenuBar,从而解决JMenu位置计算不正确的问题。
另外,你也可以尝试使用Java的AWT工具包来创建JMenuBar和JMenu,因为有时候Swing组件会出现一些奇怪的问题。例如:
```
MenuBar menuBar = new MenuBar();
Menu menu = new Menu("File");
menuBar.add(menu);
frame.setMenuBar(menuBar);
```
希望这些方法可以帮助你解决问题。
相关问题
eclipse中,Jframe显示的窗口很小也不能拖拽,怎么办?
您可以在JFrame中设置setSize()方法来设置窗口的大小,例如:
```
JFrame frame = new JFrame();
frame.setSize(500, 500);
```
此外,您还可以使用setResizable()方法来允许或禁止用户调整窗口的大小,例如:
```
frame.setResizable(true); // 允许用户调整窗口大小
frame.setResizable(false); // 禁止用户调整窗口大小
```
希望这可以帮助您解决问题。
qt c++ 设置窗口不可拖动
要设置窗口不可拖动,可以通过设置窗口的 Qt::WindowFlags 属性来实现。具体操作如下:
```
// 获取当前窗口的 Qt::WindowFlags 属性
Qt::WindowFlags flags = windowFlags();
// 设置窗口属性为不可拖动
setWindowFlags(flags & ~Qt::WindowMaximizeButtonHint & ~Qt::WindowMinimizeButtonHint & ~Qt::WindowCloseButtonHint & ~Qt::WindowStaysOnTopHint & ~Qt::Window);
// 重新显示窗口
show();
```
在上面的代码中,我们首先获取当前窗口的 Qt::WindowFlags 属性,然后通过位运算的方式将窗口的最大化、最小化、关闭、置顶以及可移动属性都取消掉,最后重新显示窗口即可。
需要注意的是,如果你想在运行时将窗口属性设置为不可拖动,建议在窗口显示前设置,否则可能会出现窗口闪烁的情况。