如何在Java中创建2个框架并将它们链接在一起?

时间:2013-08-06 21:51:59

标签: java user-interface actionlistener

我刚刚创建了一个GUI,现在我想创建另一个GUI并将它们链接在一起。

因此,当用户选择“下一个”按钮时,在第一个GUI上,将显示第二个GUI。

为此,我是否必须创建一个新类并再次创建一个GUI?

以下是我现在所拥有的:

import java.awt.Color;

import javax.swing.*;

public class Wizard {

private JLabel lblPicture;
private JRadioButton btLdap, btKerbegos, btSpnego, btSaml2;
private JButton btNext;
private JPanel panel;

public static void main(String[] args) {
    new Wizard();

}
public Wizard() {
    JFrame frame = new JFrame("Wizard");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(600,360);
    frame.setVisible(true);
    MyPanel();
    RadioButtons();
    Button();
    Image();
    groupButton();
    frame.add(panel); 
    frame.setVisible(true);

}
public void MyPanel() {
    panel = new JPanel();
    panel.setLayout(null);}
public void RadioButtons() {
    btLdap = new JRadioButton ("Ldap");
    btLdap.setBounds(60,85,100,20);
    panel.add(btLdap);

    btKerbegos = new JRadioButton ("Kerbegos");
    btKerbegos.setBounds(60,115,100,20);
    panel.add(btKerbegos);

    btSpnego =new JRadioButton("Spnego");
    btSpnego.setBounds(60,145,100,20);
    panel.add(btSpnego);

    btSaml2 = new JRadioButton("Saml2");
    btSaml2.setBounds(60,175,100,20);
    panel.add(btSaml2);
}
public void Button() {
    btNext = new JButton ("Next");
    btNext.setBounds(400,260,100,20);
    panel.add(btNext);
}
public void Image() {
    ImageIcon image = new ImageIcon("image.jpg");
    lblPicture = new JLabel(image);
    lblPicture.setBounds(200,20, 330, 270);
    panel.add(lblPicture);
}

private void groupButton() {

    ButtonGroup bg1 = new ButtonGroup( );

    bg1.add(btLdap);
    bg1.add(btKerbegos);
    bg1.add(btSpnego);
    bg1.add(btSaml2);

    }
}

3 个答案:

答案 0 :(得分:2)

  • 要显示另一个窗口,您可以创建窗口,无论是JFrame,JDialog还是您拥有的窗口,并像第一个窗口一样调用setVisible(true)
  • 你问你的另一个“窗口”是否应该在另一个班级,并且可能答案是肯定的。由于它与第一堂课有一套完全不同的行为和目标,因此最好将问题分开。
  • 话虽如此,你打算做什么,展示多个窗口并不总是最好的用户界面设计。更常见的是使用使用CardLayout的容器显示多个视图。
  • 如果要以模态方式显示另一个窗口,也就是说,在允许用户交互之前让第一个窗口等待处理第二个窗口,则第二个窗口应该是模态JDialog或者JOptionPane(伪装的JDialog)。

答案 1 :(得分:1)

我认为,对于您想要达到的目标,使用CardLayout是合适的。

这使您可以在一个框架内拥有多个面板,一次只能看到一个面板,并具有“翻转”面板的功能,如“卡片组”。因此,在初始化框架时,您可以创建所需的面板,并指定从哪一个开始,然后您的下一个按钮将转到列表中的下一个面板。

请参阅tutorial here youtube上还提供了一些视频教程。

答案 2 :(得分:0)

将两个GUI写在不同的类中。启动程序时,启动第一个GUI。

FirstGUI frame1 = new FirstGUI("Title text");
frame1.setVisible(true);

然后,在按钮的动作侦听器代码中,您调用“next”...

frame1.setVisible(false); //if you want to save the frame
frame1.dispose(); //if you want to kill the frame

SecondGUI frame2 = new SecondGUI("Title text");
frame2.setVisible(true);