GUI多个窗口

时间:2014-05-06 19:31:57

标签: java eclipse windows user-interface

我最近写了一个关于预留席位的代码。在它的guı部分我需要创建多个窗口。我的意思是窗口应该根据用户的选择而改变。例如 ; 在其中一个窗口 1)如果用户点击预约座位按钮,他将进入姓名入口页面 2)如果用户点击关于我们按钮,他将转到提供开发者信息的页面。

所以最后页面会创建复杂的交互mape。

然而,我甚至无法创造第一次过渡。我已经尝试过了内部框架!

你能给我一个关于它的例子或想法吗?

这是我的主页

public Main_GUI()   {

        getContentPane().setLayout(null);

        panel0 =new JPanel();
        panel0.setBackground(Color.BLUE);
        panel0.setBounds(22, 11, 407, 278);
        panel0.setLayout(null);
        p1=new About_Us();
        p2=new Username();
        pnew=new JPanel();


        JLabel lblLibraryBooking = new JLabel("LIBRARY BOOKING");
        lblLibraryBooking.setForeground(Color.YELLOW);
        lblLibraryBooking.setFont(new Font("Tahoma", Font.BOLD, 30));
        lblLibraryBooking.setBounds(61, 11, 295, 50);
        panel0.add(lblLibraryBooking);

        JButton btnNewButton = new JButton("RESERVE A SEAT NOW!");
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                panel0.setVisible(false);

                pnew=p2.getPanel();
                pnew.setVisible(true);
                repaint();

            }
        });
        btnNewButton.setBounds(93, 80, 198, 50);
        panel0.add(btnNewButton);

        JButton btnAboutUs = new JButton("ABOUT US");
        btnAboutUs.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                panel0.setVisible(false);
                p1.getPanel().setVisible(true);



            }
        });
        btnAboutUs.setBounds(93, 214, 198, 23);
        panel0.add(btnAboutUs);


         uri=null;
        try {
            uri = new URI("http://library.bilkent.edu.tr/");
        } catch (URISyntaxException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }



        JButton btnNewButton_1 = new JButton("Go To Bilkent Library Webpage !");
        btnNewButton_1.setBounds(93, 156, 198, 31);
        btnNewButton_1.setHorizontalAlignment(SwingConstants.LEFT);
        btnNewButton_1.setBorderPainted(false);
        btnNewButton_1.setOpaque(false);
        btnNewButton_1.setBackground(Color.WHITE);
        btnNewButton_1.setToolTipText(uri.toString());
        btnNewButton_1.addActionListener(new theListener()); 

        panel0.add(btnNewButton_1);



    }

    public static void open(URI uri) {
        if (Desktop.isDesktopSupported()) {
          try {
            Desktop.getDesktop().browse(uri);
          } catch (IOException e){
                   e.printStackTrace();
             }
        } 
      }

    private class theListener implements ActionListener
    {

            public void actionPerformed(ActionEvent e) {


                open(uri);

            }

    }
    public JPanel getPanel(){
        return panel0;
    }






}

这是我的AboutUs代码

public About_Us() {
    getContentPane().setLayout(null);

    panel1 = new JPanel();
    panel1.setVisible(false);
    panel1.setBackground(Color.RED);
    panel1.setBounds(10, 11, 430, 278);
    panel1.setLayout(null);

    JLabel lblAboutUs = new JLabel("ABOUT US");
    lblAboutUs.setForeground(Color.GREEN);
    lblAboutUs.setFont(new Font("Tahoma", Font.BOLD, 33));
    lblAboutUs.setBounds(136, 11, 176, 33);
    panel1.add(lblAboutUs);

    JTextPane txtpnWeAre = new JTextPane();
    txtpnWeAre.setFont(new Font("Tahoma", Font.ITALIC, 14));
    txtpnWeAre.setBackground(Color.CYAN);
    txtpnWeAre.setText("Our group's name is Process Completed. \r\nOur members are:\r\n-P\u0131nar G\u00F6ktepe\r\n-\u0130rem Herg\u00FCner\r\n-Berire G\u00FCnd\u00FCz\r\n-Mavi Nunn Polato\u011Flu\r\n-Fatih Alperen \u015Eahin\r\n-Vedat Mert \u015Een");
    txtpnWeAre.setBounds(10, 77, 410, 160);
    panel1.add(txtpnWeAre);

    JButton btnBack = new JButton("BACK");
    btnBack.setBounds(189, 244, 89, 23);
    btnBack.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            panel1.removeAll();
            Main_GUI Trns1=new Main_GUI();
            Trns1.getPanel().setVisible(true);
            repaint ();
        }
    });
    panel1.add(btnBack);

}

public JPanel getPanel(){
    return panel1;
}

}

这是我的工作代码,它结合了两者

public class WORK extends  JApplet {

 public static void main(String [] args) {
     JFrame frame=new JFrame ();
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

     Main_GUI m1=new Main_GUI();
     frame.add(m1.getPanel());
     frame.pack();
     frame.setVisible(true);




 }

    }

1 个答案:

答案 0 :(得分:2)

这听起来像是CardLayout manager的工作。

基本上,CardLayout允许您在更高级别的容器之间进行更改,例如另一个容器中的JPanel,以便您的主视图可以是主菜单,或者如果用户选择该主视图,则返回特定内容,并在需要时返回主菜单。 / p>