2013-10-02 5 views
0

Я использую класс RefreshablePanel, который расширяет JPanelРасширенный класс JPanel не показывает свойства JPanel

public class RefreshablePanel extends JPanel { 
    static String description=""; 
    protected void paintComponent(Graphics g){ 
     g.drawString(description, 10, 11); 
} 
    void updateDescription(String dataToAppend){  
     description = description.concat("\n").concat(dataToAppend); 
     }  
} 

JPanel descriptionPanel = new JPanel(); 
scrollPane_2.setViewportView(descriptionPanel); 
descriptionPanel.setBackground(Color.WHITE); 
descriptionPanel.setLayout(null); 

enter image description here

Теперь, когда я это делаю, как этот

RefreshablePanel descriptionPanel = new RefreshablePanel(); 
scrollPane_2.setViewportView(descriptionPanel); 
descriptionPanel.setBackground(Color.WHITE); 
descriptionPanel.setLayout(null); 

enter image description here

+0

В методе 'paintComponent' всегда вызывайте' super.paintComponent (g) ', иначе рисунок панели не будет продолжен после вашего пользовательского чертежа. – BackSlash

+0

Эта пользовательская панель выглядит так, будто она действительно должна быть стандартной панелью, которая содержит JLabel (возможно, с пустой границей, для пробела), чтобы отобразить текст. –

ответ

3

Причина этого изменилось, потому что, когда вы переопределить paintComponent, вы всегда должны вызывать super.paintComponent(g) в первой строке:

protected void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    g.drawString(description, 10, 11); 
} 

Метод paintComponent в JPanel суперкласса рисует фон, так что если вы вставите super.paintComponent(g), фон будет окрашен, прежде чем вы нарисуете что-нибудь обычай.

+0

@BackSlash Упс. Исправлено это сейчас. – tbodt

+0

Thanx за ответ, который сработал и для этого дополнительного знания вместе с тем, что я просил –

3
protected void paintComponent(Graphics g){ 
     super.paintComponent(g); 
     g.drawString(description, 10, 11); 
} 

Вы должны всегда ссылаться на super.paintComponent(), когда вы переопределяете метод paintComponent().

+0

Можете ли вы сказать, почему? – tbodt

+0

да, это сработало, Thanx много. –

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