gpt4 book ai didi

Java - 为什么我的按钮没有显示在面板中?

转载 作者:行者123 更新时间:2023-12-02 10:49:41 24 4
gpt4 key购买 nike

我正在尝试学习Java Swing。现在,我正在制作一个简单的程序,我需要制作一个按钮。我有两个类(class):驾驶类(class)和挥杆类(class)。我创建按钮并导入 javax.swing.JButton 并添加按钮。最后,按钮添加到面板中,但不知道为什么我只得到面板?有人可以帮我吗?这是我的代码:

 import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Swing extends JFrame {

private JFrame f;
private JButton button;
private JLabel label;
private JPanel panel;

public Swing() {
}

public Swing(String titleName) {
creatButton();
creatFrame(titleName);
}

public void creatButton() {
JButton btn = new JButton("click me");
JPanel panel = new JPanel();
panel.add(btn);
btn.setBounds(50, 100, 95, 30);
add(panel);

}

private void creatFrame(String title) {
JFrame f = new JFrame(title);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
f.setSize(400, 500);
f.setLayout(null);

}

}
public class Driver {
public static void main (String [] args) {
new Swing ("calculator");
}

}

最佳答案

好的,让我们从...开始

JButton btn = new JButton("click me");
JPanel panel = new JPanel();
panel.add(btn);
btn.setBounds(50, 100, 95, 30);
add(panel);

你:

  • 创建按钮
  • 创建面板
  • 您将按钮添加到面板
  • 您将面板添加到框架

然后...

JFrame f = new JFrame("calculator");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new
f.setVisible(true);

您创建了一个全新的 JFrame 实例并显示它,但它上面什么都没有?! 😱!

相反,您应该避免从 JFrame 扩展,也许可以使用 JPanel 代替,例如...

public class Swing extends JPanel {

private JButton button;
private JLabel label;

public Swing() {
creatButton();
add(button);
}

public void creatButton() {
JButton btn = new JButton("click me");
}
}

然后您可以创建一个窗口(或其他容器)并将其添加到其中

JFrame f = new JFrame(title);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new Swing());
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);

作为一般规则,JFrame 是一个非常糟糕的扩展点,它是一个复杂的复合组件,并将您锁定在单个用例中。一般来说,从 JPanel 开始是一个更好的主意,它为您提供了更大的灵 active 、更低的复杂性并且易于重用。

你真的真的真的需要避免 null 布局

关于Java - 为什么我的按钮没有显示在面板中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52271653/

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