2010-03-04 141 views
-1

我在我的框架上有一个面板。通过点击一个按钮,我想删除旧面板并制作其他面板并将该面板添加到我的框架中(我也使用netbeans) 帮我,我怎么能做到这一点感谢更新面板

+0

我想在运行要做到这一点说明谢谢 – Johanna 2010-03-04 17:09:57

+3

你真的更好地接受亚当斯基的回答,看来他是绝望这些点(瞄准10K?),因为他是唯一一个继续提供帮助,即使它现在ab自从你上次打扰接受答案以来,已有15次发帖。顺便说一下,所发布的代码将不起作用,但希望您至少能从所提出的概念中学习并自行解决问题。您也可以阅读您多次指出的教程。 – camickr 2010-03-04 17:24:45

+0

为什么代码不起作用? – Adamski 2010-03-04 17:28:05

回答

3
JFrame frame = new JFrame(); 
final JPanel origPanel = new JPanel(); 
frame.add(origPanel, BorderLayout.CENTER); 

MouseListener ml = new MouseAdapter() { 
    public void mouseClicked(MouseEvent evt) { 
    // Mouse clicked on panel so remove existing panel and add a new one. 
    frame.remove(origPanel); 
    frame.add(createNewPanel(), BorderLayout.CENTER); 

    // Revalidate frame to cause it to layout the new panel correctly. 
    frame.revalidate(); 

    // Stop listening to origPanel (prevent dangling reference). 
    origPanel.removeMouseListener(this); 
    } 
} 

origPanel.addMouseListener(ml); 
+0

谢谢 我写你的代码在我的框架,我用“这个”而不是“框架”,这是正确的?我也不能写this.revalidate()。请帮助我,谢谢 – Johanna 2010-03-04 17:30:30

+1

我知道你会回来尝试解决你的编译错误的勺子喂养。你不能自己做任何想法吗?你不知道如何使用API​​来查找有效的方法和它们适用的对象吗? – camickr 2010-03-04 17:33:28

+0

我可以使用repaint()替换revalidate() – Johanna 2010-03-04 19:13:23

0

这样:

final JFrame frame = new JFrame(); 
    frame.setSize(200, 200); 

    final JPanel panelA = new JPanel(); 
    final JPanel panelB = new JPanel(); 
    JButton button = new JButton("Switch"); 
    button.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      frame.remove(panelA); 
      frame.add(panelB); 
      frame.show(); 
     } 
    }); 
    JLabel label = new JLabel("This is panel B. Panel A is gone!"); 
    panelB.add(label); 
    panelA.add(button); 
    frame.add(panelB); 
    frame.add(panelA); 
    frame.show(); 
+0

我不能写这个.show !!!! – Johanna 2010-03-04 17:33:23