我想添加一個帶有actionListener的JButton到JPanel中,而不需要像下面那樣聲明JButton。用actionListener添加新的JButton()而不聲明它
JPanel tempPanel = new JPanel();
tempPanel.add(new JButton().addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// DO SOMETHING
}
}));
錯誤消息給我Cannot resolve method 'add(void)'
。
我不知道爲什麼這是不正確的。這只是一個語法錯誤嗎?或者是不是我可以像這樣添加JButton和ActionListener?
我知道肯定,如果我這樣做,它會工作。
JButton tempButton = new JButton();
tempButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// DO SOMETHING
}
});
tempPanel.add(tempButton);
我會感謝您的幫助。提前致謝。
因爲'addActionListener'是你調用方法' JButton',並且該方法不會返回'JButton',因爲它是'void'。最後'void'不是'add'方法的有效參數。你不能像'Java'那樣正常鏈接那些方法,因爲它們很可能不會返回'this'。 – SomeJavaGuy
謝謝你回答我的問題。 所以,這是否意味着沒有什麼不同的方法來使我的第一個代碼工作?除了我已經寫作第二代碼的方式嗎? –
新的JButton(new AbstractAction(){...})你需要在AbstractAction中實現actionPerformed方法,但你會得到基本相同的結果 – MadProgrammer