日期:2014-05-20  浏览次数:20847 次

百思不得其解的一个问题

做一个计算器的练习写下如下代码,eclipse在添加MenuBar到最后每行都提示错误,都是这类的错误
Multiple markers at this line
- Syntax error on token "mb", VariableDeclaratorId expected after this 
token
- Syntax error on token(s), misplaced construct(s)


而当写下主方法把CounterText 中的代码括起来时,错误就消失了,或者不写主方法,仅仅把CounterText 中的代码用一个大括号括起来,错误同样消失,请教各位这是怎么回事呢,这一个大括号起的什么作用呢?

import java.awt.Dimension;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class CounterText {

JFrame frame = new JFrame("计算器");

JMenuBar mb = new JMenuBar();

JMenu m1 = new JMenu(" File");
JMenu m2 = new JMenu(" Save");

JMenuItem item1 = new JMenuItem("New");
JMenuItem item2 = new JMenuItem("hello");

frame.setJMenuBar(mb);

mb.add(m1);
mb.add(m2);

m1.add(item1);
m1.add(item2);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(new Dimension(200, 300));
frame.setVisible(true);
}




------解决方案--------------------
Java code

frame.setJMenuBar(mb);

mb.add(m1);
mb.add(m2);

m1.add(item1);
m1.add(item2);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(new Dimension(200, 300));
frame.setVisible(true);

------解决方案--------------------
简单的说,就是在类的声明变量区是不能出现独立的执行语句的。除非放在一对大括号里{}. 这样的一对大括号,叫代码块。(这样没有方法名的代码块,不是很多见)。

如下面的程序:
public class Test
{
Object obj;
Object obj1=new Object(); //声明同时赋值可以。
//System.out.println("Hello world"); //这句执行语句出现在这里就不对了。
{
System.out.println("Hello world"); //出现在这里也可以,此段代码没有方法名,
//是在初始化的时候执行,程序无法调用。
}
Test()
{
System.out.println("Hello world"); 出现在这里就可以。产生对象时执行。
}
display()
{
System.out.println("Hello world"); 出现在这里就可以。 供类的对象调用。
}
}