2 回答

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個贊
好吧,讓我們開始吧……
JButton btn = new JButton("click me");
JPanel panel = new JPanel();
panel.add(btn);
btn.setBounds(50, 100, 95, 30);
add(panel);
你:
創(chuàng)建一個按鈕
創(chuàng)建面板
您將按鈕添加到面板
您將面板添加到框架
進(jìn)而...
JFrame f = new JFrame("calculator");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new
f.setVisible(true);
您創(chuàng)建了一個全新的實(shí)例JFrame并顯示它,但它沒有任何內(nèi)容?!??!
相反,您應(yīng)該避免從擴(kuò)展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");
}
}
然后您可以創(chuàng)建一個窗口(或其他容器)并將其添加到其中
JFrame f = new JFrame(title);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new Swing());
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
作為一般規(guī)則,它JFrame是一個非常糟糕的擴(kuò)展點(diǎn),它是一個復(fù)雜的復(fù)合組件并將您鎖定在單個用例中。通常,從JPanel為您提供更多靈活性和更少復(fù)雜性并且易于重用的東西開始是一個更好的主意。
你真的,真的,真的需要避免null布局

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個贊
creatFrame
正在創(chuàng)建一個不同于框架本身的新 JFrame(您的 Swing 類擴(kuò)展 JFrame)。
刪除該行:
JFrame f = new JFrame(title);
并調(diào)用方法this
而不是f
.
添加回答
舉報