2016-10-06 3 views
1

Программа предназначена для отображения 3 кнопок на JPanel. Программа успешно скомпилирована. Появится окно GUI и пусто. Когда я минимизирую окно, а затем увеличиваю его снова, появятся кнопки. При этом снова появляется другой набор кнопок. Кнопка продолжает появляться, когда окно обновляется, а старые данные остаются нетронутыми.paintComponent не стирается JPanel

JPanel Класс

class MyJPanel extends JPanel { 
JButton jb1, jb2, jb3; 

@Override 
public void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    g.setColor(Color.WHITE); 
    g.fillRect(0, 0, this.getWidth(), this.getHeight()); 
    jb1 = new JButton(); 
    jb2 = new JButton("Green"); 
    jb3 = new JButton("Blue"); 
    //g.drawString("Welcome!", 100, 100); 
    ImageIcon img = new ImageIcon("next.png"); 
    jb1.setIcon(img); 
    jb1.setToolTipText("Button 1"); 
    this.add(jb1); 
    this.add(jb2); 
    this.add(jb3); 
} 
} 

фрейму Класс

class MyJFrame extends JFrame { 
MyJPanel mjp; 

public MyJFrame(String title) { 
    super(title); 

    mjp = new MyJPanel(); 

    Container ct = getContentPane(); 
    ct.add(mjp); 

    this.setVisible(true); 
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 
} 

драйвера класса

class Gui5JButton { 
public static void main(String[] args) { 
    MyJFrame mjf = new MyJFrame("Prakhar"); 
    mjf.repaint(); 
} 
} 

ответ

2

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

jb1 = new JButton(); 
jb2 = new JButton("Green"); 
jb3 = new JButton("Blue"); 
//g.drawString("Welcome!", 100, 100); 
ImageIcon img = new ImageIcon("next.png"); 
jb1.setIcon(img); 
jb1.setToolTipText("Button 1"); 
this.add(jb1); 
this.add(jb2); 
this.add(jb3); 

в конструкторе класса MyJPanel.

+0

Благодарим за быстрый ответ. Это сработало! –

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

  • Нет связанных вопросов^_^