Я пытаюсь найти основные принципы добавления действия к JButton
или другим компонентам. Вот что я делаю и что получаю.Принципы ActionListener
Я создал класс с именем: Ali, который имеет основной метод в нем, внутри основного метода. Создайте еще один метод: MainFrame
и любые компоненты, которые у меня есть, здесь.
Я создал простую кнопку здесь, зарегистрировался, что с интерфейсом ActionListener
, и я написал для этого метод actionPerformed()
. Очень просто и легко. Но, как-то эта программа дала мне ошибку. Вот упрощенные коды и ошибки.
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class Ali{
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run() {
JFrame frame = new MainFrameAli2("MainFrameAli2");
frame.setSize(400,600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
А вот MainFrameAli2
класс
public class MainFrameAli2 extends JFrame implements ActionListener {
public MainFrameAli2(String title){
super(title);
// set layout manager
setLayout(new BorderLayout());
// create swing component
JTextArea textArea = new JTextArea();
JButton button = new JButton("click");
// add swing components to content pane
Container c = getContentPane();
c.add(textArea, BorderLayout.NORTH);
c.add(button, BorderLayout.SOUTH);
// add behavior
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
System.out.println("Clicked");
}
});
}
}
Теперь проблема код не работает, здесь ошибка:
Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problems:
The public type MainFrameAli2 must be defined in its own file
The type MainFrameAli2 must implement the inherited abstract method ActionListener.actionPerformed(ActionEvent)
И, если я пишу код, как показано ниже , все работает нормально.
// add behavior
button.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
System.out.println("hooyt");
}
}
Почему он не работает в первом случае и работает во втором корпусе?
Для лучшей помощи раньше, опубликовать [MCVE] (http://stackoverflow.com/help/mcve) (минимальный полная Проверяемость пример) или [ SSCCE] (http://www.sscce.org/) (короткий, самосохраненный, правильный пример). –
1) 'Неразрешенные проблемы компиляции' Не пытайтесь запускать код перед его компиляцией! 2) Единственная пустая строка пробела в исходном коде - это все, что требуется *. Пустые строки после '{' или before '}' также типично избыточны. –