2015-03-04 2 views
1
class MultiplicationTablePanel extends JPanel { 
    @Override 
     protected void paintComponent(Graphics g) { 
     super.paintComponent(g); 


     g.drawString("Multiplication Table", 0, 0); 

Если я хочу нарисовать что-то на панели, мне нужно переопределить функцию paintComponent. Если я хочу создать новую функцию вместо переопределения, например "protected void testPaintComponent (Graphics g)"Создать новую функцию вместо переопределения paintComponent

Это не работает, панель ничего не показывает. В чем причина?

ответ

1

Это потому, что Swing будет называть paintComponent, когда компонент должен быть нарисован. Если вы придумаете новый метод, Swing не будет знать об этом, и он не будет вызван.

Если вы хотите назвать ваш метод

protected void testPaintComponent(Graphics g) { ... } 

вы должны убедиться, что paintComponent делегатов этого метода следующим образом:

@Override 
protected void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    testPaintComponent(g); 
} 
Смежные вопросы