2015-02-05 4 views
0

Это похоже на такую ​​простую проблему, но почему-то я не смог ответить Google. Учебники, похоже, просматривают начало, и я не вижу, как их программа отличается от моей. Все, что я пытаюсь сделать, это создать JPanel и использовать класс Graphics для рисования на нем, при запуске программы.Рисование графики при запуске программы; PaintComponent никогда не назывался

Я создал супер упрощенную версию программы, которая также не работает:

public class Thing 
{ 
    public static void main(String[] args) 
    { 
     JFrame mainFrame = new JFrame("Test"); 
     mainFrame.setResizable(false); 
     mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     OtherThing panel = new OtherThing(); 

     mainFrame.getContentPane().add(panel); 
     mainFrame.pack(); 
     mainFrame.setVisible(true); 
    } 
} 

public class OtherThing extends JPanel 
{ 
    public OtherThing() 
    { 
     setBackground(Color.black); 
     setPreferredSize(new Dimension(400,400)); 
     repaint(); 
    } 
    public void PaintComponent(Graphics g) 
    { 
     super.paintComponents(g); 
     setBackground(Color.red); 
     setForeground(Color.red); 
     System.out.println("start"); 
     g.drawOval(0,0,50,50); 
     g.drawLine(0,0 , 100, 100); 
     g.drawString("This is my custom Panel!",10,20); 
     System.out.println("After"); 

    } 
} 

В Sytem.out.println-х никогда не распечатывается. PaintComponent никогда не вызывается. В некоторых учебниках, которые я смотрел на них, они звучали так же просто, как перекраска, называет paintcomponent, но в моей программе paintcomponent никогда не вызывается.

Я просто хочу, чтобы графика рисовала при запуске.

+0

Изменения 'общественного недействительного PaintComponent (график г)' в '@Override общественного недействительного PaintComponent (Graphics г)' для сообщения полезного компилятора .. –

+0

я запутался ... он сказал мне, что нечего переоценивать? У JPanel нет PaintComponent? – Khaines0625

ответ

4

Java чувствителен к ключевым словам.

public void PaintComponent(Graphics g) 

должен быть

public void paintComponent(Graphics g) 
+0

Wow ... все это время lol. Спасибо, это работает. – Khaines0625

+0

И не нужно быть 'public' – MadProgrammer

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