【发布时间】:2014-05-18 07:43:37
【问题描述】:
所以,我正在做一个插槽项目,因为我想熟悉 java 图形库。该设置工作得相当完美。然后,我尝试画一条线来测试图形,得到了错误:
engine.java:9: non-static method drawLine(int,int,int,int) cannot be referenced from a static context
java.awt.Graphics.drawLine(1, 2, 11, 12);
^
1 error
我听从朋友的建议,创建了一个新的engine 并将其命名为e,然后我没有使用drawloop(),而是使用了e.drawloop,但出现了同样的错误。
代码:
import java.awt.Graphics;
import java.awt.Dimension;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class engine{
public void drawloop(){
java.awt.Graphics.drawLine(1, 2, 11, 12);
}
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
display();
}
});
engine e = new engine();
e.drawloop();
}
public static void display(){
JFrame window = new JFrame("Pinnacle Slots");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setPreferredSize(new Dimension(768, 512));
window.pack();
window.setLocationRelativeTo(null);
window.setVisible(true);
}
}
【问题讨论】:
-
你没有正确使用swing。完全没有。
-
看看我为另一个问题创建的这个简单示例。 github.com/anubiann00b/JFrameExample
-
您正在尝试调用
Graphics类的非静态成员。你需要一个Graphics的对象。如果我记得 awt 编程正确,你的画布/容器应该有一个 repaint() (或类似的东西)方法,框架将通过传递 Graphics 类的对象来调用。 -
不要听你的“朋友”,当然也不要胡乱猜测。阅读教程并遵循它们。有关更多信息,请参阅@peeskillet 的链接。