2013-04-10 19 views
-2

我有一個表單,當我點擊保存按鈕時,「是」字符串應顯示在我的控制檯上!動作監聽器無法在揮杆上工作

(我用「是」字符串測試!)

但點擊時無法正常工作。 我的代碼:

public final class NewUserFrame1 extends JFrame implements ActionListener { 

UserInformation userinfo; 
JLabel fnamelbl; 
JLabel lnamelbl; 
JTextField fntf; 
JTextField lntf; 
JLabel gndlnl; 
JRadioButton malerb; 
JRadioButton femalerb; 
ButtonGroup bgroup; 
JLabel registnm; 
JButton savebt; 
JButton cancelbt; 
JLabel showreglbl; 

public NewUserFrame1() { 
    add(rowComponent(), BorderLayout.CENTER); 
    setLocation(200, 40); 
    setVisible(true); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    pack(); 
} 

public JPanel rowComponent() { 

    JPanel panel = new JPanel(); 
    fnamelbl = new JLabel("First name"); 
    lnamelbl = new JLabel("Last Name"); 
    JLabel fntemp = new JLabel(); 
    JLabel lntemp = new JLabel(); 
    fntf = new JTextField(10); 
    lntf = new JTextField(10); 
    gndlnl = new JLabel("Gender"); 
    malerb = new JRadioButton("Male"); 
    femalerb = new JRadioButton("Female"); 
    bgroup = new ButtonGroup(); 
    bgroup.add(malerb); 
    bgroup.add(femalerb); 
    registnm = new JLabel("Registration ID is:"); 
    showreglbl = new JLabel(""); 
    JLabel regtemp = new JLabel(); 
    savebt = new JButton("Save"); 
    cancelbt = new JButton("Cancell"); 
    JLabel buttontemp = new JLabel(); 

    panel.add(fnamelbl); 
    panel.add(fntf); 
    panel.add(fntemp); 
    panel.add(lnamelbl); 
    panel.add(lntf); 
    panel.add(lntemp); 
    panel.add(gndlnl); 

    JPanel radiopanel = new JPanel(); 
    radiopanel.setLayout(new FlowLayout(FlowLayout.LEFT)); 
    radiopanel.add(malerb); 
    radiopanel.add(femalerb); 
    panel.add(radiopanel); 
    panel.add(new JLabel()); 
    panel.add(registnm); 
    panel.add(showreglbl); 
    panel.add(regtemp); 
    panel.add(savebt); 
    panel.add(cancelbt); 
    panel.add(buttontemp); 

    panel.setLayout(new SpringLayout()); 
    SpringUtilities.makeCompactGrid(panel, 5, 3, 50, 10, 80, 60); 
    return panel; 
} 

public static void main(String[] args) { 
    SwingUtilities.invokeLater(new Runnable() { 
     @Override 
     public void run() { 
      NewUserFrame1 newUserFrame1 = new NewUserFrame1(); 
     } 
    }); 
} 

@Override 
public void actionPerformed(ActionEvent e) { 
    if (e.getSource() == savebt) { 
     System.out.print("Yes"); 
    } 
} 

} 

回答

3

你需要告訴按鈕來調用ActionListener:如果你打算用同樣的方法進行保存和取消按鈕

savebt = new JButton("Save"); 
savebt.addActionListener(this); 

注意,你需要區分,也許通過比較ActionEvent的來源與兩個按鈕進行區分。

4

你需要一個ActionListener添加到您的按鈕,像這樣:

savebt.addActionListener(this); 

或匿名類,如下所示:

savebt.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
      // your code. 
    } 
}); 

使用匿名類(或內部類)是更好,因爲在給定的類中不能有多個actionPerformed()方法。