2010-02-10 18 views
0

我使用內部類執業的非法啓動但我有一個家庭作業問題的難度:它是如下:內部問題。表達錯誤

創建擴展JPanel以及具有標記「一」三個JButton的實例Swing組件類BetterButtons, 「兩」和「三」。在BetterButtons的構造函數中,編寫實現ActionListener的本地類ButtonListener。這個本地類有一個字段字符串名稱和一個構造函數,它接受一個字符串參數,並將其分配給字段名稱。 void actionPerformed在控制檯通知上輸出標籤名爲button的按鈕。在BetterButtons的構造函數中,創建ButtonListener的三個實例,每個按鈕監聽其操作。

我快完了,但是,我得到表達錯誤的非法開始在該行:

public void actionPerformed(ActionEvent e){ 

這裏是我的代碼:

import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*; 

public class BetterButtons extends JPanel { 
JButton one, two, three; 
JPanel p; 
public BetterButtons() { 
    class ButtonListener implements ActionListener { 
     String name; 
     *****public ButtonListener(String name) {**** 
       public void actionPerformed(ActionEvent e){ 
        System.out.println("Button "+name+"has been pressed."); 
       } 
       } 
      } 
    one = new JButton("One"); 
    two = new JButton("Two"); 
    three = new JButton("Three"); 
    one.addActionListener(new ButtonListener()); 
    two.addActionListener(new ButtonListener()); 
    three.addActionListener(new ButtonListener()); 
    p = new JPanel(); 
    p.add(one); 
    p.add(two); 
    p.add(three); 
    this.add(p); 
} 
    public static void main(String[] args) { 
    JFrame f = new JFrame("Lab 2 Exercise 2"); 
    BetterButtons w = new BetterButtons(); 
    f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
    f.getContentPane().setLayout(new FlowLayout()); 
    f.getContentPane().add(w); 
    f.pack(); 
    f.setVisible(true); 
} 
} 

另外,我怎麼能引用正確的值分配給字符串變量名?

預先感謝您

回答

1

我覺得你buttonListener的定義應該是:

class ButtonListener implements ActionListener { 
    String name; 
    public ButtonListener(String name) { 
      this.name = name; 
    } 
    public void actionPerformed(ActionEvent e){ 
       System.out.println("Button "+name+"has been pressed."); 
    } 

    } 

再經過一個名稱buttonlistener的每個實例,如:

one.addActionListener(new ButtonListener("one")); 
+2

注意, OP在描述中提到這是對作業的幫助。 – akf 2010-02-10 05:31:02

+2

事實上 - OP與解決方案非常接近 - 指出語法中的輕微錯誤的最好方式就是通過一個例子 - 這是一個例子,通過這個例子,他們可以更徹底地學習Java的結構。 – Chaos 2010-02-10 05:57:03

相關問題