gpt4 book ai didi

java - 看不到我在 JFrame 中添加的 JButtons(JLabel)

转载 作者:行者123 更新时间:2023-11-30 06:13:39 26 4
gpt4 key购买 nike

所以我有一个名为 Menu 的类,它扩展了 JLabel 并具有一个向其自身添加 3 个 JButton 的构造函数。

 public Menu() {
this.add(jbutton1);
this.add(jbutton2);
this.add(jbutton3);
}

我有另一个名为 GUI 的类,它扩展了 JFrame 并将 JLabel 添加到其 contentPane 中。

public GUI() {
Menu menu = new Menu();
getContentPane().add(menu);
setSize(300,200);
setVisible(true);
}

GUI的主要方法如下所示:

public static void main(String[] args) {
GUI gui = new GUI();
}

所以我想要的是一个带有 3 个 JButtons 的 JFrame(稍后会做更多的事情)。相反,我只是得到了一个空白的 JFrame。为什么我看不到我添加的带有 3 个 JButton 的 JLabel?

最佳答案

您忘记了布局管理器,它是控制如何将组件添加到容器以及如何调整容器大小的关键。 JLabels 不习惯用作容器并容纳其他组件,因此默认情况下使用 null 布局 - 根本没有布局,使您成为负责调整任何添加组件的大小和位置的程序员。

解决方案:

  • 自行设置 JButton 的大小和位置 - 这是一个非常糟糕的解决方案,因为它会导致 GUI 只能在一个平台上正常工作,并且难以调试和维护
  • 或者为容器(此处为 JLabel)提供一个合适的布局管理器。
  • 或者使用另一个容器(例如 JPanel)作为 contentPanel,该容器已经具有布局管理器。有多种方法可以让 JPanel 显示图像,包括重写其 PaintComponent 方法。

您可以在这里找到布局管理器教程:Layout Manager Tutorial ,您可以在此处找到 Swing 教程和其他 Swing 资源的链接:Swing Info .

关于java - 看不到我在 JFrame 中添加的 JButtons(JLabel),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49707708/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com