Почему это не сделать? - PullRequest
       1

Почему это не сделать?

0 голосов
/ 17 апреля 2011

вот мой код:

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 ]

4 голосов
/ 17 апреля 2011

Если бы 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);
    }

}

Отказ от ответственности: этот код был написан из памяти, поэтому он может иметь ошибки

2 голосов
/ 17 апреля 2011

Не в этом javadocs:

http://download.oracle.com/javase/6/docs/api/

На кого ты смотришь?

Кроме того, почему вы не верите компилятору? Какой смысл не соглашаться, если вы никогда не пройдете мимо компилятора? Просто делай то, что говорит, и продолжай.

Ты говоришь как потерянная душа. Начните с этого:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...