我正在研究Java Swing和监听器的使用,我在使用以下简单代码时遇到了一些问题:
package com.mycompany.experiment;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class ListenerExp1 {
private class MyButtonListener implements ActionListener {
public void actionPerformed(ActionEvent evt) {
// Qui scriviamo il codice che vogliamo eseguire all' azione del
// click sul pulsante
}
}
JFrame frame = new JFrame("FrameDemo");
frame.setMinimumSize(new Dimension(800, 400));
JButton button = new JButton("Cliccami");
MyButtonListener listener = new MyButtonListener();
button.addActionListener(listener);
}
在这段代码中,我声明了一个监听器类,并尝试创建一个JFrame和一个JButton对象。
问题在于,当我尝试通过以下行添加一些属性到这些对象时:
frame.setMinimumSize(new Dimension(800, 400));
和
button.addActionListener(listener);
Eclipse在这两行上签名以下错误:
此行有多个标记 - 令牌上的语法错误,错放的构造(s) - 令牌“setMinimumSize”上的语法错误,=此后的预期
有什么问题?
TNX
安德烈
答案 0 :(得分:2)
这些语句应该在代码块中,例如构造函数
JFrame frame = new JFrame("FrameDemo");
frame.setMinimumSize(new Dimension(800, 400));
JButton button = new JButton("Cliccami");
MyButtonListener listener = new MyButtonListener();
button.addActionListener(listener);
此外,你想在EDT
中调用它们
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame("FrameDemo");
frame.setMinimumSize(new Dimension(800, 400));
JButton button = new JButton("Cliccami");
MyButtonListener listener = new MyButtonListener();
button.addActionListener(listener);
}
});
答案 1 :(得分:1)
在java中,无法在方法之外或之外初始化实例。
将以下代码放在方法中。
JFrame frame = new JFrame("FrameDemo");
frame.setMinimumSize(new Dimension(800, 400));
JButton button = new JButton("Cliccami");
MyButtonListener listener = new MyButtonListener();
button.addActionListener(listener);