2014-01-28 6 views
1

Я знаю, что это, вероятно, просто, но это вызывает у меня проблемы. Когда я использую paint(), он ничего не показывает, и если я использую paintComponent(), он показывает ошибку (не может найти символ). Что я делаю не так?Использование super.paint() ничего не будет показывать

Это пример использования краски():

import javax.swing.*; 
import java.awt.Graphics; 
import java.awt.*; 

public class Test extends JFrame { 

    public Test() { 
     this.setPreferredSize(new Dimension(400, 400)); 
     this.pack(); 
     this.setVisible(true); 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 

    @Override 
    public void paint(Graphics g) { 
     super.paint(g); 

     // define the position 
     int locX = 200; 
     int locY = 200; 

     // draw a line (there is now drawPoint..) 
     g.drawLine(locX, locY, locX, locY); 
    } 

    public static void main(String[] args) { 
     Test test = new Test(); 
    } 
} 

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

[SOLVED] Всем, кто ответил, спасибо. LOL у меня бра, я действительно не заметил, что была крошечная точка. Удивительный чувак, спасибо.

+1

Работает на шахте ... Точка 1 на 1 пиксель, поэтому вам действительно нужно внимательно посмотреть на нее. Для большего эффекта измените функцию drawLine() на 'g.fillRect (locX - 2, locY - 2, 4, 4)'. – initramfs

+0

@CPUTerminator это все еще в координате (200 200)? и ты просто сделал это больше? – ThisGuy

+0

Да. Вместо этого использовал метод 'fillRect()', чтобы нарисовать заполненный «прямоугольник» вместо строки. Ширина и высота - 4 пикселя. Для этого не совсем идеально по 200, 200, для этого используйте 'g.fillRect (locX - 2, locY - 2, 5, 5)'. – initramfs

ответ

3

Вы не рекомендуете делать код, но это не работает.

Вы не устанавливаете цвет для рисования, и вы рисуете одну точку. Вы, вероятно, просто не видели его (мне пришлось смотреть дважды). Он рисует один черный пиксель на 200, 200.

2

Я бы поспорил, проблема в том, что вы рисуете только одну точку, поэтому ее трудно увидеть. Ваш код отлично работает для меня.

Однако вы должны расширить JPanel, а не JFrame. Рекомендуемое значение: http://docs.oracle.com/javase/tutorial/uiswing/painting/

Смежные вопросы