首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JMenuBar能见度混淆

JMenuBar能见度混淆
EN

Stack Overflow用户
提问于 2016-01-20 17:24:07
回答 1查看 192关注 0票数 1

我正在学习Java中的GUI。我在这里有点困惑。当我这样放置window.setVisible(true);时,只有当我调整它的大小时,我才会看到它(如果没有某种交互,它就不会显示出来)。

代码语言:javascript
复制
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;

public class Main {

    public static void main(String[] args) {

        JFrame window = new JFrame("My App");
        window.setSize(500, 500);
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setVisible(true);
        JMenuBar bar = new JMenuBar();
        window.setJMenuBar(bar);
        JMenu menu = new JMenu("File");
        bar.add(menu);

    }

}

但是当我把它放在最下面的时候,它就会像预期的那样显示出来。为什么会这样呢?

代码语言:javascript
复制
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;

public class Main {

    public static void main(String[] args) {

        JFrame window = new JFrame("My App");
        window.setSize(500, 500);
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JMenuBar bar = new JMenuBar();
        window.setJMenuBar(bar);
        JMenu menu = new JMenu("File");
        bar.add(menu);
        window.setVisible(true);

    }

}

在这里解释说,它必须被称为在最后,但背后的理由是什么呢?

java JMenuBar不可见?为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-20 17:27:50

添加组件后,必须重新绘制容器。因此,如果在窗口可见后添加菜单栏,它将在下一次重新绘制后弹出,在您的示例中是在调整大小之后。如果将菜单添加到前面的设置窗口为可见,它将在第一次绘图时绘制。

这是Swing组件的常见行为。

请参阅组件javadoc

如果添加或删除组件:

如果容器已经显示,则必须在其后验证层次结构,以显示添加的组件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34906535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档