Java 为什么这个不能渲染?
这是我的密码:Java 为什么这个不能渲染?,java,2d,Java,2d,这是我的密码: import java.awt.*; class g { public static void main(String arg[]) { System.out.println("hello"); Rectangle rec=new Rectangle(4,4); Graphics2D.draw(rec); } } 当我尝试
import java.awt.*;
class g
{
public static void main(String arg[])
{
System.out.println("hello");
Rectangle rec=new Rectangle(4,4);
Graphics2D.draw(rec);
}
}
当我尝试编译它时,我得到以下结果:
无法从静态上下文引用非静态方法drawjava.awt.Shape
这使我困惑。为什么会发生这种情况?如果Graphics2D是一个抽象类,Graphics2D.drawshape怎么可能是非静态的 不在此javadocs中:
你在看哪一个
另外,你为什么不相信编译器?如果你永远都无法通过编译器,那么不同意有什么意义呢?照上面说的去做,继续做下去
你听起来像个迷失的灵魂。从这个开始:
如果Graphics2D.draw是静态的,您希望在哪里绘制矩形?显示器的左上角?当前活动的窗口?在新窗户里面
Graphics2D.draw不是静态的,因为可以在许多图形上下文中进行绘制。向我们解释您希望在何处绘制矩形,我们可以帮助您获得合适的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);
}
}
免责声明:此代码是从内存编写的,因此可能有错误否。它不是静态方法。说真的,这是什么问题?比起编译器和文档,你更相信你的直觉吗?嗯,错误文本说明了所有必要的东西。事实上,对不起,我误读了文档。我试图学习图形,所以我不确定我想做什么?比如说我现在的班长。我的选项是什么?@David:你可以画到屏幕,你可以画到窗口,你可以像我的例子那样画到窗口中的特定组件,你可以画到内存缓冲区,你可以画到文件,你可以画到X Windows会话。。。有很多选择为了让它编译,我必须添加import javax.swing.*;导入java.awt.*;到了顶端,当我运行它时,我只得到一个灰色的窗口,这就是它应该做的吗?顺便说一句,谢谢你的代码示例。@David:是的,它只画了一个灰色的窗口。但现在,那个窗口就是你的画布。您可以在g2上调用方法,它们应该出现在该窗口中。@David:Replace//您需要的任何其他图形。。。使用您自己的代码。例如,您可以将g2.DrawNewRectangle4、4;在那里,它应该画一个小矩形。如果这不起作用,请尝试一个更大的矩形。