这是我的代码:
import java.awt.*;
class g
{
public static void main(String arg[])
{
System.out.println("hello");
Rectangle rec=new Rectangle(4,4);
Graphics2D.draw(rec);
}
}
当我尝试编译它时,我得到了这个:
这让我很困惑。为什么会这样?如果Graphics2D是一个抽象类,那么Graphics2D.draw(shape s)如何是非静态的?非静态方法draw(java.awt.Shape)不能从静态上下文引用
答案 0 :(得分:4)
如果Graphics2D.draw
是静态的,那么 你希望绘制矩形吗?显示器的左上角?目前有效的窗口?在新窗口内?
Graphics2D.draw
不是静态的,因为您可以在其中绘制许多图形上下文。向我们解释 where 您希望绘制矩形,我们可以帮助您获取适合您需要的Graphics2D
对象。
如果您想了解图形,您应该能够做到这样的事情:
public class MyGraphicsFun {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(800, 600);
frame.add(
new JComponent() {
public Dimension getPreferredSize() {
return new Dimension(800, 600);
}
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.RED);
// Any other drawing you want...
}
}
);
frame.setVisible(true);
}
}
免责声明:此代码是从内存中编写的,因此可能有错误
答案 1 :(得分:2)
不在此javadocs中:
http://download.oracle.com/javase/6/docs/api/
你正在看哪一个?此外,你为什么不相信编译器?如果你永远不会超越编译器,那么不同意的重点是什么?只要做它说的话并继续下去。
你听起来像一个迷失的灵魂。从这开始: