ActionListener не работает Java - PullRequest
       10

ActionListener не работает Java

0 голосов
/ 09 марта 2012

Что мне здесь не хватает?

 public class abc extends JFrame    {
 private JButton save = new JButton("Save");

 public abc() {
    JPanel p = new JPanel();
    save.addActionListener(new SaveL());
    p.add(save);
    Container cp = getContentPane();
    p = new JPanel();
    p.setLayout(new GridLayout(2, 1));

    cp.add(p, BorderLayout.NORTH);
  }


 }

 class SaveL implements ActionListener {

        public void actionPerformed(ActionEvent e) {    
            System.out.println("Hello"); // nothing happens

        }
}

Почему мой ActionListener не работает здесь

Ответы [ 4 ]

6 голосов
/ 09 марта 2012

Вы создаете JPanel, добавляете к нему JButton, затем создаете новый JPanel и добавляете эту панель к своему JFrame.Вам необходимо добавить исходную панель на панель контента.

5 голосов
/ 09 марта 2012

Ваш код полностью испорчен. Вы создаете экземпляр JPanel p дважды, ваша кнопка объявляется «открытой», но на самом деле «сохраняется». Вы смешиваете GridLayout с ограничениями BorderLayour. Работает следующий код:

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class abc extends JFrame {
    private JButton save = new JButton("Save");

    public abc() {
        JPanel p = new JPanel();
        save.addActionListener(new SaveL());
        p.add(save);
        p.setLayout(new GridLayout(2, 1));

        add(p);
    }

    public static void main(String[] args) {
        abc abc = new abc();
        abc.pack();
        abc.setVisible(true);
    }

}

class SaveL implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("Hello"); // nothing happens

    }
}
1 голос
/ 09 марта 2012

Ваш код заново создает панель.Она теряет кнопку.

Я изменил ее на:

public class abc extends JFrame{   
    private JButton save = new JButton("Save");

    public abc() {
       JPanel p = new JPanel();
       save.addActionListener(new SaveL());
       p.add(save);
       Container cp = getContentPane();

       cp.add(p, BorderLayout.NORTH);
     }


}

class SaveL implements ActionListener {

       public void actionPerformed(ActionEvent e) {    
           System.out.println("Hello"); // nothing happens

       }
}

, и она заработала

0 голосов
/ 09 марта 2012
private JButton open = new JButton("Save");

save.addActionListener(new SaveL());

Вы объявили сохранение как открытое?

...