我刚刚创建了一个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);
}
}
答案 0 :(得分:2)
setVisible(true)
。答案 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);