为什么不渲染?

时间:2011-04-17 18:17:04

标签: 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); 
        }
    }

当我尝试编译它时,我得到了这个:

  

非静态方法draw(java.awt.Shape)不能从静态上下文引用

这让我很困惑。为什么会这样?如果Graphics2D是一个抽象类,那么Graphics2D.draw(shape s)如何是非静态的?

2 个答案:

答案 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/

你正在看哪一个?

此外,你为什么不相信编译器?如果你永远不会超越编译器,那么不同意的重点是什么?只要做它说的话并继续下去。

你听起来像一个迷失的灵魂。从这开始:

http://download.oracle.com/javase/tutorial/2d/index.html