如何使用mouseClicked从不同的类切换JPanel?

时间:2019-07-07 14:01:15

标签: java swing jframe jpanel

我现在正在学习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个文件中。

0 个答案:

没有答案