我刚开始一个简单的GUI项目,在创建菜单栏时,我遇到了一个我发现无法解释的错误。我想使用ActionListener
向JMenuItem
添加addActionListener
,就像过去一样。但是,当我应用所述方法时,Eclipse会给出一个错误:“令牌上的语法错误”addActionListener“,=此符号后的预期值。”我唯一的想法是,或许addActionListener
被解释为属性而不是方法......但我过去曾使用过这种方法,所以我知道它有效。我不确定我应该提供多少代码,所以如果我想编辑更多代码,请告诉我。
package com.movethehead;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
@SuppressWarnings("serial")
public class Main extends JFrame {
private final int W = 500;
private final int H = 500;
JMenuBar menuBar = new JMenuBar();
JMenu file = new JMenu("File");
JMenuItem exitItem = new JMenuItem("Exit");
exitItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ev) {
System.exit(0);
}
});
JMenu headMenu = new JMenu("Heads");
JMenu bgMenu = new JMenu("Backgrounds");
public Main() {
setTitle("Move the Head");
setSize(W, H);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
add(new Pnl());
setJMenuBar(menuBar);
} // end constructor
public static void main( String[] args ) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
Main f = new Main();
f.setVisible(true);
}
});
} // end main()
} // end Main
答案 0 :(得分:4)
它对我来说是你有什么
JMenuBar menuBar = new JMenuBar();
JMenu file = new JMenu("File");
JMenuItem exitItem = new JMenuItem("Exit");
exitItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ev) {
System.exit(0);
}
});
JMenu headMenu = new JMenu("Heads");
在任何方法定义之外,并且无法调用该代码。
试试这个:
public class Main extends JFrame{
//initialize integer height/width values along with declaring
//Swing component variables
private final int W = 500,
H = 500;
private JMenu file, headMenu, bgMenu;
private JMenuBar menuBar;
private JMenuItem exitItem;
//constructor
public Main(){
setTitle("Move the Head");
setSize(W, H);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
initializeElements();
}
//Initializes the elements, this part is missing from your code above.
public void initializeElements(){
menuBar = new JMenuBar();
file = new JMenu("File");
exitItem = new JMenuItem("Exit");
exitItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ev) {
System.exit(0);
}
});
headMenu = new JMenu("Heads");
bgMenu = new JMenu("Backgrounds");
}
public static void main( String[] args ) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
Main f = new Main();
f.setVisible(true);
}
});
}
}
答案 1 :(得分:0)
该代码没问题。附近的一行可能存在语法错误,导致解析混乱。要么是上一行,要么是搞砸了exitItem
的声明。