我想知道如何在運行時更改JFrame的內容。就像添加一個新的JPanel並刪除舊的JPanel一樣。如何在運行時更改JFrame中的JPanel
0
A
回答
-1
2
您可以考慮使用CardLayout
改變一幀中的活動面板。
0
在運行時在此改變的JPanel是代碼:
package stack;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class RemoveAndAddPanel implements ActionListener{
JFrame frame;
JPanel firstPanel;
JPanel secondPanel;
JPanel controlPanel;
JButton nextButton;
JPanel panelContainer;
JButton preButton;
JPanel contentPane;
public RemoveAndAddPanel() {
JFrame.setDefaultLookAndFeelDecorated(true);
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
firstPanel = new JPanel();
firstPanel.add(new JLabel("FirstPanel"));
firstPanel.setPreferredSize(new Dimension(100,100));
secondPanel = new JPanel();
secondPanel.add(new JLabel("Second panel"));
secondPanel.setPreferredSize(new Dimension(100,100));
panelContainer = new JPanel();
contentPane = new JPanel(new BorderLayout());
nextButton = new JButton("Next panel");
preButton = new JButton("PreButton");
controlPanel = new JPanel();
nextButton.addActionListener(this);
preButton.addActionListener(this);
preButton.setEnabled(false);
controlPanel.add(preButton);
controlPanel.add(nextButton);
panelContainer.setLayout(new BorderLayout());
panelContainer.add(firstPanel,BorderLayout.CENTER);
contentPane.add(controlPanel, BorderLayout.SOUTH);
contentPane.add(panelContainer,BorderLayout.CENTER);
frame.setContentPane(contentPane);
frame.setVisible(true);
frame.setSize(300,100);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == nextButton) {
panelContainer.removeAll();
panelContainer.setSize(0,0);
panelContainer.setSize(secondPanel.getSize());
panelContainer.add(secondPanel,BorderLayout.CENTER);
panelContainer.revalidate();
nextButton.setEnabled(false);
preButton.setEnabled(true);
}
if (e.getSource() == preButton) {
panelContainer.removeAll();
panelContainer.setSize(0,0);
panelContainer.setSize(firstPanel.getSize());
panelContainer.add(firstPanel,BorderLayout.CENTER);
nextButton.setEnabled(true);
preButton.setEnabled(false);
}
}
public static void main(String args[]) {
new RemoveAndAddPanel();
}
}
相關問題
- 1. 如何更改JFrame內部的JPanel?
- 2. 如何從JPanel swing更改JFrame標籤
- 3. 使用NetBeans GUIBuilder更改JFrame中的JPanel
- 4. 更新JFrame中的JPanel
- 5. 當我在JFrame中更改JPanel時,我失去了焦點
- 6. 如何添加更多的Jpanel到JFrame?
- 7. 當我在JFrame上更改JPanel組件時,無法顯示我的JPanel組件
- 8. JFrame中的JPanel
- 9. 將JFrame(無佈局)更改爲JPanel
- 10. JFrame的執行時間增加的JPanel
- 11. 如何隱藏Jpanel後更新Jframe
- 12. 在運行時更改JPanel的大小,java
- 13. 如何在JFrame中添加外部JPanel?
- 14. 如何在JFrame中「打包」JPanel?
- 15. 如何在Jframe中創建一個JPanel?
- 16. 在從的JFrame JPanel中
- 17. JFrame中的Sandbox JPanel
- 18. 在運行時如何在運行時更改屬性值
- 19. 在JFrame中居中JPanel
- 20. 更新JPanel/JFrame不工作
- 21. JFrame中的默認JPanel更小
- 22. 在JFrame中用JPanel替換JPanel
- 23. 如何動態重繪JFrame中的JPanel?
- 24. 如何訪問JFrame中的多個JPanel?
- 25. 如何顯示/隱藏JFrame中的JPanel?
- 26. JFrame中看不到JPanel中的子JPanel
- 27. 如何在運行時更改persistence.xml
- 28. WPF:如何在運行時更改CurrentUICulture
- 29. 如何在運行時更改語言
- 30. 如何在運行時更改視圖
出了什麼問題'JFrame.remove()','JFrame.add()'? – DNA 2012-02-22 19:17:41
可能重複[如何更改JFrame中的JPanel?](http://stackoverflow.com/questions/218155/how-do-i-change-jpanel-inside-a-jframe-on-the -fly) – DNA 2012-02-22 19:30:49
http://stackoverflow.com/questions/9371460/how-can-i-stack-overlay-jpanels-in-java/9377623#9377623可能的重複? – Juvanis 2012-02-22 19:48:10