2013-04-10 5 views
-2

J'ai un formulaire, Que lorsque je clique pour enregistrer le bouton, "Oui" String devrait afficher sur ma console!Action Listener ne fonctionne pas sur swing

(utiliser "Oui" String pour le test!)

Mais ne fonctionne pas lorsque vous cliquez dessus. Mon code:

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"); 
    } 
} 

} 

Répondre

3

Vous devez dire le bouton pour appeler la ActionListener:

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

Notez que si vous avez l'intention d'utiliser la même méthode pour les enregistrer et annuler les boutons, vous devrez différencier, peut-être en comparant la source du ActionEvent par rapport aux deux boutons.

4

Vous devez ajouter un ActionListener à votre bouton comme ceci:

savebt.addActionListener(this); 

ou avec une classe anonyme, comme ceci:

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

Utilisation des classes anonymes (ou classes internes) est mieux parce que vous ne pouvez pas avoir plus d'une méthode actionPerformed() dans une classe donnée.