我認爲在同一個類中編寫監聽器不是OOP方式。所以,我嘗試在另一個文件中編寫監聽器。該工程ActionListener在相鄰類中的實現
代碼是:
class MyPanel extends JPanel{
private String tString = "Test String";
private JLabel tLabel;
public MyPanel(){
tLabel = new JLabel("Label");
JButton tButton = new JButton("Click me");
tButton.addActionListener(new ActionListener(){
public void ActionPerformed(ActionEvent e){
tLabel.setText(tString);
}
});
}
但是,當我在寫分離文件聽衆:
public class MyListener implements ActionListener{
copy code here
}
,改變
tButton.addActionListener(new ActionListener(){
到
tButton.addActionListener(new MyListener());
它不起作用。 當然,我嘗試過不同的組合。
例如,將「this」發送給偵聽器的構造函數,並從偵聽器類中收到的 對象中調用方法。
錯誤:
MyListener: cannot find symbol "tLabel"
你能發佈更多關於「它不工作」的細節嗎? – Brian
public void ActionPerformed應該是public void actionPerformed –
Dan,我在這裏做的這個錯字,在代碼中一切正常。 – Danila