编辑:MyDrawPanel是这样的:
class MyDrawPanel extends JPanel {
public void paintComponent(Graphics g) {
g.setColor(Color.RED);
g.fillOval(d, e, 40, 40);
}
}
我对这一小块代码感到沮丧。我正在尝试创建一个新的MyDrawPanel。代码:
class Simulation{
MyDrawPanel drawPanel = new MyDrawPanel();
public static void startSimulation() {
frame.getContentPane().add(drawPanel); //drawPanel must be static
}
}
问题在于:Eclipse告诉我drawPanel必须是静态的。但是,每当我将其更改为静态时,Eclipse都会给出一个错误,基本上告诉我要摆脱静态。
我做过研究,这就是我发现的:https://stackoverflow.com/a/9560633/4778083 这个人告诉我,我应该让这个类静态,但每当我这样做时,Eclipse告诉我,“模拟类的非法修饰符;只允许使用public,abstract和amp。final。”
所以基本上,我被卡住了。我的代码出了什么问题?
答案 0 :(得分:0)
首先,你谈到的答案是嵌套类,你的不是嵌套类。其次,如果您打算在startSimulation()
中致电main()
,则必须将Simulation
的实例设为静态。您不能将整个类声明设为静态,而只能将类的实例设为静态。你应该真正阅读更多关于static
的内容。
我的意思是:
public class SomeClass{
static Simulation s = new Simulation();
public static void main(String[] args){
s.startSimulation();
}
}
修改:MyDrawPanel
中Simulation
的实例也必须为static
,因为您无法引用非静态变量静态背景。
"静态变量是一个静态分配的变量 - 其生命周期或范围在整个程序运行中延伸" - Wikipedia