2010-03-04 140 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