我现在正在学习javax.swing,我只是在尝试一些东西。但是现在我面临着一个我无法解决的问题。当我单击JLabel更改页面(jpanel)时,什么也没有发生。它不会删除并显示另一个jpanel。
我还添加了一个
public final HomeGUI getMainFrame() {
return this;
}
,并在mouseClicked(MouseEvent e)
gui.getMainFrame().removeAll();
我也尝试过
gui.getMainFrame().mainPanel.removeAll();
我的GUI:
public class HomeGUI extends JFrame {
private static final long serialVersionUID = 1L;
JPanel mainPanel = new JPanel(new CardLayout());
final CardLayout cl = new CardLayout();
final JPanel mainPanel = new JPanel(cl);
Panel panel;
Page2 page2;
public HomeGUI() {
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(1200, 650);
this.setTitle("Terminal");
this.setLocationRelativeTo(null);
this.setLayout(new BorderLayout(1,1));
panel = new Panel();
panel.Inhalt();
page2 = new Page2();
page2.Inhalt();
this.add(mainPanel);
mainPanel.add(panel, "Seite1");
mainPanel.add(page2, "Seite2");
cl.show(mainPanel, "panel");
}
public static void main(String[] args) {
HomeGUI terminal = new HomeGUI();
terminal.setResizable(false);
terminal.setVisible(true);
}
}
小组:
class Panel extends JPanel {
private HomeGUI gui;
Page2 page2;
private static final long serialVersionUID = 1L;
JPanel Panel;
JLabel title = new JLabel("Willkommen");
JLabel bgc = new JLabel("");
JLabel menuStrich = new JLabel();
JLabel menuTitle = new JLabel("Menu");
JLabel menuHome = new JLabel("Home");
JLabel menuSeite2 = new JLabel("Seite2");
public void Inhalt() {
this.setBackground(new Color(230, 230, 230));
this.add(title);
this.add(bgc);
this.setLayout(null);
//Seite1
title.setSize(300, 50);
title.setLocation(300, 20);
title.setFont(new Font("Alba Matter", Font.PLAIN, 48));
//Menu
bgc.setLayout(null);
bgc.setOpaque(true);
bgc.setBackground(new Color(66, 78, 245));
bgc.setSize(280, 650);
bgc.setLocation(0, 0);
bgc.add(menuTitle);
bgc.add(menuStrich);
bgc.add(menuHome);
bgc.add(menuSeite2);
menuTitle.setLocation(90, 10);
menuTitle.setSize(100, 50);
menuTitle.setFont(new Font("Bahnschrift", Font.PLAIN, 38));
menuTitle.setForeground(Color.white);
menuStrich.setLocation(10, 55);
menuStrich.setSize(260, 5);
menuStrich.setBackground(new Color(240, 240, 240));
menuStrich.setOpaque(true);
menuHome.setLocation(30, 70);
menuHome.setSize(200, 50);
menuHome.setFont(new Font("Concert One", Font.PLAIN, 36));
menuHome.setForeground(Color.white);
menuSeite2.setLocation(30, 130);
menuSeite2.setSize(200, 50);
menuSeite2.setForeground(Color.LIGHT_GRAY);
menuSeite2.setFont(new Font("Concert One", Font.PLAIN, 32));
menuSeite2.addMouseListener(new menuSeite2Event());
}
private class menuSeite2Event extends MouseAdapter {
@Override
public void mouseClicked(MouseEvent e) {
//show page2
gui.cl.show(gui.mainPanel, "page2");
}
@Override
public void mouseEntered(MouseEvent e) {
menuSeite2.setForeground(Color.CYAN);
}
@Override
public void mouseExited(MouseEvent e) {
menuSeite2.setForeground(Color.LIGHT_GRAY);
}
}
}
class Page2 extends JPanel {
private static final long serialVersionUID = 1L;
JPanel Panel;
JLabel title = new JLabel("Willkommen");
JLabel bgc = new JLabel("");
JLabel menuStrich = new JLabel();
JLabel menuTitle = new JLabel("Menu");
JLabel menuHome = new JLabel("Home");
JLabel menuSeite2 = new JLabel("Seite2");
public void Inhalt() {
this.setBackground(new Color(230, 230, 230));
this.add(title);
this.add(bgc);
this.setLayout(null);
//Seite1
title.setSize(300, 50);
title.setLocation(300, 20);
title.setFont(new Font("Alba Matter", Font.PLAIN, 48));
//Menu
bgc.setLayout(null);
bgc.setOpaque(true);
bgc.setBackground(new Color(66, 78, 245));
bgc.setSize(280, 650);
bgc.setLocation(0, 0);
bgc.add(menuTitle);
bgc.add(menuStrich);
bgc.add(menuHome);
bgc.add(menuSeite2);
menuTitle.setLocation(90, 10);
menuTitle.setSize(100, 50);
menuTitle.setFont(new Font("Bahnschrift", Font.PLAIN, 38));
menuTitle.setForeground(Color.white);
menuStrich.setLocation(10, 55);
menuStrich.setSize(260, 5);
menuStrich.setBackground(new Color(240, 240, 240));
menuStrich.setOpaque(true);
menuHome.setLocation(30, 70);
menuHome.setSize(200, 50);
menuHome.setFont(new Font("Concert One", Font.PLAIN, 36));
menuHome.setForeground(Color.white);
menuHome.addMouseListener(new menuHomeEvent());
menuSeite2.setLocation(30, 130);
menuSeite2.setSize(200, 50);
menuSeite2.setForeground(Color.white);
menuSeite2.setFont(new Font("Concert One", Font.PLAIN, 32));
}
private class menuHomeEvent extends MouseAdapter {
@Override
public void mouseClicked(MouseEvent e) {
//show Home
}
@Override
public void mouseEntered(MouseEvent e) {
menuHome.setForeground(Color.CYAN);
}
@Override
public void mouseExited(MouseEvent e) {
menuHome.setForeground(Color.LIGHT_GRAY);
}
}
}
INFO:所有类都在1个文件中。