0

我刚刚创建了一个 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);

    }
}
4

3 回答 3

2
  • 要显示另一个窗口,您将创建该窗口,无论是 JFrame、JDialog 还是您所拥有的,然后setVisible(true)像您为第一个窗口所做的那样调用。
  • 你问你的另一个“窗口”是否应该在另一个班级,很可能答案是肯定的。由于它将具有与第一类完全不同的一组行为和目标,因此最好将关注点分开。
  • 话虽如此,您计划做的事情,显示多个窗口并不总是最好的用户界面设计。更好的做法是使用使用 CardLayout 的容器显示多个视图。
  • 如果你想以模态方式显示另一个窗口,也就是说,在允许用户交互之前让第一个窗口等待第二个窗口被处理,那么第二个窗口应该是模态的 JDialog 或 JOptionPane(伪装的 JDialog)。
于 2013-08-06T21:57:06.590 回答
1

我认为对于您想要实现的目标,使用 aCardLayout是合适的。

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

请参阅此处的教程,youtube 上也有一些视频教程。

于 2013-08-06T22:04:41.777 回答
0

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

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

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

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);
于 2013-08-06T21:58:18.020 回答