2 回答
TA贡献1886条经验 获得超2个赞
好吧,让我们开始吧……
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为您提供更多灵活性和更少复杂性并且易于重用的东西开始是一个更好的主意。
你真的,真的,真的需要避免null布局
TA贡献2037条经验 获得超6个赞
creatFrame
正在创建一个不同于框架本身的新 JFrame(您的 Swing 类扩展 JFrame)。
删除该行:
JFrame f = new JFrame(title);
并调用方法this
而不是f
.
添加回答
举报