代码是这样的:
import javax.swing.*;
import java.awt.*;
class NoHelloWorldPanel extends JPanel
{
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawString("not a hello world program",MESSAGE_X,MESSAGE_Y);
public static final int MESSAGE_X = 75;
public static final int MESSAGE_Y = 100;
}
}
class NoHelloWorldFrame extends JFrame
{
public NoHelloWorldFrame()
{
setTitle("Not Hello World!!");
setSize(WIDTH,HEIGHT);
NoHelloWorldPanel panel = new NoHelloWorldPanel();
Container contentpane = getContentPane();
contentpane.add(panel);
}
public static final int WIDTH= 300;
public static final int HEIGHT = 200;
}
public class NoHelloWorld
{
public static void main(String [] args)
{
NoHelloWorldFrame frame = new NoHelloWorldFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
以上代码在编译的时候提示如下错误:
illegal start of expression public static final int MESSAGE_X = 75;
illegal start of expression public static final int MESSAGE_Y= 100
但是如果把代码中划线的两行注释了。改为 g.drawString("not a hello world program",70,100);
是可以通过编译并运行的。
这是怎么回事啊??
----------------解决方案--------------------------------------------------------
关键在于static的使用
----------------解决方案--------------------------------------------------------
static 怎么了?能说的详细点吗?
去掉STATIC还是不行啊
----------------解决方案--------------------------------------------------------
public static final int MESSAGE_X = 75;
应该在使用前定义 并且static 变量应该是不能在成员方法中定义的
----------------解决方案--------------------------------------------------------
当然错了,去掉static 也没有用
而要全部去掉public static
因为这两个变量是局部变量,(位于一个方法之内的)
那么它不可能可以有范围修饰符public private protected ,
所以更不可能加一个static啦
一般在局部变量能加的修饰符只有final
[此贴子已经被作者于2006-3-19 18:31:15编辑过]
----------------解决方案--------------------------------------------------------