java Swing GUI 入門-切換佈局
阿新 • • 發佈:2020-12-21
java Swing GUI 入門-切換佈局
覺得有用的話,歡迎一起討論相互學習~
佈局
- 大部分和上一節: https://xuzhiwei.blog.csdn.net/article/details/111498257 的內容一致,新加入的內容有
- 通過按鈕切換Panel
- Panel的疊加
- 佈局,並向底部的ParentPanel中新增三個同等大小的panel相互疊加在一起.並且具有不同的顏色.
新增事件
- 向Button1中新增按鈕事件以只顯示panel1
card1button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { parentPanel.removeAll(); parentPanel.add(card1Panel); parentPanel.repaint(); parentPanel.revalidate(); } }); }
- 向Button2中新增按鈕事件以只顯示panel2
- 向Button2中新增按鈕事件以只顯示panel3
card2Button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { parentPanel.removeAll(); parentPanel.add(card2Panel); parentPanel.repaint(); parentPanel.revalidate(); } }); card3Button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { parentPanel.removeAll(); parentPanel.add(card3Panel); parentPanel.repaint(); parentPanel.revalidate(); } });
效果演示
完整程式碼
import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class CardLayout { private JPanel mainPanel; private JPanel buttonPanel; private JButton card1button; private JButton card2Button; private JButton card3Button; private JPanel card1Panel; private JPanel card2Panel; private JPanel parentPanel; private JPanel card3Panel; private JCheckBox checkBox1; private JRadioButton radioButton1; private JButton button1; public CardLayout() { card1button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { parentPanel.removeAll(); parentPanel.add(card1Panel); parentPanel.repaint(); parentPanel.revalidate(); } }); card2Button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { parentPanel.removeAll(); parentPanel.add(card2Panel); parentPanel.repaint(); parentPanel.revalidate(); } }); card3Button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { parentPanel.removeAll(); parentPanel.add(card3Panel); parentPanel.repaint(); parentPanel.revalidate(); } }); } public static void main(String[] args) { JFrame frame = new JFrame("Card Layout"); frame.setContentPane(new CardLayout().mainPanel); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } }