【问题标题】:Java Components Not Displaying + Layout QuestionsJava 组件不显示 + 布局问题
【发布时间】:2023-03-13 14:10:01
【问题描述】:

我有几个问题:

首先,也是最重要的一点,为什么您可以多次运行带有框架、几个面板、按钮等的 GUI 程序 - 无需更改任何内容 - 一半时间组件显示在框架中,另一半时间显示在框架中当时什么都没有显示......从字面上看,我没有改变代码,这是最令人沮丧的问题。有时东西出现,有时什么也没有。我正在使用 Eclipse,并且在 main 方法中只有以下代码。

其次,有人能解释清楚框架、面板和布局是如何工作的吗?

JFrame f = new JFrame();
f.setSize(400, 400);
f.setLayout(new BorderLayout());
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.setVisible(true);

JPanel p = new JPanel();
JButton alpha = new JButton();
JButton bravo = new JButton();
alpha.setLabel("Alpha");
bravo.setLabel("Bravo");
p.add(alpha, BorderLayout.WEST);
p.add(bravo, BorderLayout.EAST);
p.add(new JLabel("Charlie"), BorderLayout.SOUTH);
f.add(p);

上述有时有效,但当它有效时,它并没有说明我如何从 Oracle 页面和教程中理解。我创建了一个框架(没有默认布局),创建了一个带有两个应该彼此相邻的按钮(WEST,EAST)的面板,然后在面板底部添加一个标签 - 整个面板被添加到框架中.但是,它们都在框架顶部彼此相邻添加,居中。

每个面板只能有一个组件吗?您可以在一个框架中添加多个面板,如果可以,它们会重叠吗?

仅供参考,我在这里观看了 YouTube 视频并阅读了其他一些帖子,似乎没有什么能简单而彻底地解释基础知识,所以我认为论坛帖子会得到更好的解释。

谢谢

【问题讨论】:

    标签: java user-interface layout jframe jpanel


    【解决方案1】:

    有时会出现,有时什么都没有

    添加所有组件后,最后调用f.setVisible(true);即可。


    几点:

    1. 使用 SwingUtilities.invokeLater() 确保EDT 已正确初始化。

      阅读全文

    2. 调用f.pack() 而不是使用f.setSize(400, 400)

    3. JFrame默认使用BorderLayout,无需重新设置。


    我在这里观看了 YouTube 视频并阅读了其他一些帖子,似乎没有什么可以简单而彻底地解释基本知识

    请查看 Swing 教程的以下部分,以便更好地理解 JFrameLayout 以及详细示例:

    【讨论】:

    • 哇,解决了最烦人的问题 - 谢谢!以为你可以在框架设置时做到这一点。你能解释一下布局吗?为什么我不能在面板底部添加标签(当我将面板添加到框架并运行时,它们都在NORTH排列)
    • 请查看How to Use Various Layout Managers 以更好地理解布局,您的答案隐藏在本教程的某处。 :)
    • 好吧,如果我有更多问题,我会单独发一个帖子(因为上半部分已经解决)。谢谢
    • 熟能生巧。所以继续编码......很快就会见到你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 2013-08-02
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    相关资源
    最近更新 更多