2 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個(gè)贊
您的代碼中有幾個(gè)錯(cuò)誤:
您不應(yīng)該擴(kuò)展
JFrame
,請(qǐng)參閱擴(kuò)展 JFrame 與在程序中創(chuàng)建它不要調(diào)用布局管理器將負(fù)責(zé)定位您的
setBounds(...)
組件不要在行與行之間或打開/關(guān)閉大括號(hào)之后/之前留下太多額外的空間,
{}
這樣會(huì)變得難以閱讀不要作為類名調(diào)用
Button
,它可能與java.awt.Button
類混淆。
它不顯示其文本,它應(yīng)該執(zhí)行的操作也不會(huì)發(fā)生
在這個(gè)類中:
public class Button extends JButton {
private String actionName;
public Button(String actionName) {
this.actionName = actionName;
JButton button = new JButton();
button.setText(actionName);
button.setSize(30, 30);
button.setBounds(5, 5, 25, 25);
button.addActionListener(new Evt(this.actionName));
}
}
您從中擴(kuò)展JButton
,然后在其中創(chuàng)建一個(gè)JButton
內(nèi)部!所以,你有 2 JButtons
,一個(gè)來自類(繼承的)和你在其中創(chuàng)建的一個(gè)。但是您將文本設(shè)置為內(nèi)部創(chuàng)建的文本,但您將另一個(gè)文本(沒有文本)添加到您的JFrame
.
用一個(gè)比喻來說,就像:
你在頁面上寫了一些東西
你得到一個(gè)新的白頁并將它添加到你的書中,而不是將你寫的那個(gè)添加到你的書中。
無需JButton
在您當(dāng)前的程序中進(jìn)行擴(kuò)展,因此只需創(chuàng)建一個(gè)新JButton
實(shí)例即可。
否則,如果您真的想使用自定義JButton
類,請(qǐng)執(zhí)行以下操作:
public class MyCustomButton extends JButton { // Change class name
private String actionName;
public MyCustomButton(String actionName) {
super(actionName); //Sets the text
this.actionName = actionName;
button.addActionListener(new Evt(this.actionName));
}
}

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊
您實(shí)際上不需要?jiǎng)?chuàng)建 JButton 的子類,因?yàn)槟鷽]有向它添加任何特定屬性。相反,您應(yīng)該能夠使其以這種方式工作:
public class HomeFrame extends JFrame{
private static final String BUTTON_ACTION_NAME = "myActionName";
public HomeFrame(String title) {
super(title);
this.setLayout(new FlowLayout(FlowLayout.CENTER));
JButton test = new JButton();
test.setText(BUTTON_ACTION_NAME);
test.setSize(30, 30);
test.setBounds(5, 5, 25, 25);
test.addActionListener(new Evt(BUTTON_ACTION_NAME));
Container cont = getContentPane();
cont.add(test, BorderLayout.CENTER);
}
}
添加回答
舉報(bào)