2013-08-30 3 views
1

Так что я совершенно новичок в программировании и программировании на Java в целом и, пожалуйста, извините за недостаток знаний. Я пытаюсь нарисовать простой прямоугольник на экране с некоторыми заданными координатами.2D-графика 2D - рисование прямоугольника

Вот мой код в Ящика Класс:

public class Drawer extends JPanel { 

public static void drawPixel(Graphics g, int x, int y) { 
    g.fillRect(x, y, 5, 5); 
} 

} 

А вот код, который я пытаюсь использовать в главном классе:

Drawer drawer = new Drawer(); 
Drawer.drawPixel(Graphics g, i9, i10); 

Так что я действительно не понимаю, что первый аргумент для. Это дает мне ошибку, говоря, что он не может решить «Символ g». i9 и i10 - это координаты, в которых я хочу, чтобы он рисовал прямоугольник.

Заранее благодарим за любую помощь. :)

+2

Вы должны проверить http://docs.oracle.com/javase/tutorial/uiswing/painting/step1.html, который приведет вас к http://docs.oracle.com/javase/tutorial/uiswing/painting/ step3.html –

+2

Проведите некоторое время через учебник Oracle Swing. Он покажет вам, как объединить элементы графического интерфейса. http://docs.oracle.com/javase/tutorial/uiswing/ –

ответ

1

Drawer.drawPixel(Graphics g, i9, i10);, вероятно, является источником вашей проблемы.

Вы передаете (как первый аргумент) что-то вдоль линий Graphics g. Подумайте, просто пропустите g сам по себе без Graphics бит - это должно решить вашу проблему.

Объект Graphics g относится к графическому контексту - это то, что эффективно рисует материал на экране. Вызывая методы на нем, вы можете буквально рисовать вещи, где пользователь может их видеть. В качестве примера можно использовать paintComponent(). Вы заметите, что этот метод принимает объект Graphics - вы можете использовать его для рисования материала на панели.

4

Вы не можете нарисовать что-то подобное. Вы должны использовать метод paintComponent() для рисования.

Проверьте это:

public class RectDrawer extends JPanel { 
    private int x; 
    private int y; 
    public RectDrawer(int x, int y){ 
     this.x = x; 
     this.y = y; 
    } 
    public void paintComponent(Graphics g) { 
     g.fillRect(x, y, 5, 5); 
    } 
} 
+0

Это самый лучший способ сделать это, если вы работаете в Swing - мне это нравится. – Surveon

+1

'paintComponent' не является статичным и общедоступным (http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html # paintComponent% 28java.awt.Graphics% 29) –

+0

Статика не должна быть там, но в противном случае (на основе моего опыта) это правильный способ переопределить его .. нет? – Surveon

0

Некоторые из вашего кода не прав, как графики г. Я не собираюсь смириться с этим, так как другие есть, но я рекомендую вам посмотреть некоторые уроки. Если ваш новый для Java в целом, а затем проверить:

video

Вы должны проверить, что видеоряд, она учит вас твердое понимание синтаксиса Java и основы. Тогда после этого вы можете начать проверять учебники, как это:

video

Это один учит вас действительно хорошее твердое понимание делать сложные игры в Java. Я рекомендую даже промежуточного и продвинутого программиста Java, чтобы проверить это. Когда я начал, я посмотрел на другие учебники, и они в основном остановились на полпути, имели ужасные ошибки или что-то в этом роде. Это видео учит его более простым способом.