- 论坛徽章:
- 0
|
我的原代码如下:
import java.awt.*;
import javax.swing.*;
public class MyPanelTest
{
public static void main(String[] args)
{
MyPanel frame=new MyPanel();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class MyPanel extends JFrame
{
public MyPanel()
{
setTitle("NotHelloWorld");
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
MyPanelClass panel=new MyPanelClass();
add(panel);
}
public static final int DEFAULT_WIDTH=300;
public static final int DEFAULT_HEIGHT=200;
}
class MyPanelClass extends JPanel
{
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawString("Not a Hello,World Program",MESSAGE_X,MESSAGE_Y);
}
int MESSAGE_X=75;
int MESSAGE_Y=100;
}
编译通过了,可是执行的时候出现了下面的信息.我把所有的信息贴出来了.方便你们更好的分析.
我把红色部分前面加上this.结果和下面的信息是完全相同的.
D:\project>java -version
java version "1.4.1"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1-b21)
Java HotSpot(TM) Client VM (build 1.4.1-b21, mixed mode)
D:\project>javac MyPanelTest.java
D:\project>java MyPanelTest
Exception in thread "main" java.lang.Error: Do not use MyPanel.add() use MyPanel
.getContentPane().add() instead
at javax.swing.JFrame.createRootPaneException(Unknown Source)
at javax.swing.JFrame.addImpl(Unknown Source)
at java.awt.Container.add(Unknown Source)
at MyPanel.<init>(MyPanelTest.java:19)
at MyPanelTest.main(MyPanelTest.java:7)
D:\project>
继续我把中间的类MyPanel做过修改后如下:
class MyPanel extends JFrame
{
public MyPanel()
{
Container cP=MyPanel.getContentPane();
setTitle("NotHelloWorld");
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
MyPanelClass panel=new MyPanelClass();
cP.add(panel);
}
public static final int DEFAULT_WIDTH=300;
public static final int DEFAULT_HEIGHT=200;
}
还是出现了下面的错误:
D:\project>javac MyPanelTest.java
MyPanelTest.java:16: non-static method getContentPane() cannot be referenced fro
m a static context
Container cP=MyPanel.getContentPane();
^
1 error
D:\project>
我没有其他的办法了.请求大家的帮助. |
|