JButton选择后的移动方法

时间:2013-11-23 20:18:11

标签: java swing jframe jbutton

当我选择第一个选项并点击选择时,JFrame保持不变,我希望它关闭并进入下一个被调用的方法并打开另一个JFrame。有谁能看到这个问题?我无法弄清楚我哪里出错了

public class GUI extends JFrame 
    {
    public static void main(String args [])
    {       
    final JFrame frame = new JFrame("Choose an option");
    frame.setSize(350, 180);
    frame.setDefaultCloseOperation(
      JFrame.EXIT_ON_CLOSE);
    frame.setLayout(new GridLayout(0, 1, 0, 0));

    final JRadioButton sb = new JRadioButton("Student");
    final JRadioButton lb = new JRadioButton("Lecturer");
    final JRadioButton cdb = new JRadioButton("Course Director");
    final JRadioButton ab = new JRadioButton("Admin");
    ButtonGroup buttonGroup = new ButtonGroup();
    buttonGroup.add(sb);
    buttonGroup.add(lb);
    buttonGroup.add(cdb);
    buttonGroup.add(ab);
    JPanel panel = new JPanel();
    panel.add(sb);
    panel.add(lb);
    panel.add(cdb);
    panel.add(ab);
    frame.getContentPane().add(panel);
    panel.setLayout(new GridLayout(0, 1, 0, 0));
    JButton select = new JButton("Select");
    JButton cancel = new JButton("Cancel");
    select.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e)
        {
            if(sb.isSelected())
            {
                frame.dispose();
                StudentGUI();
            }
            else if(lb.isSelected())
                System.out.println("Lecturer");
            else if(cdb.isSelected())
                System.out.println("Course Director");
            else if(ab.isSelected())
                System.out.println("Admin");
        }
    });
    cancel.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e)
        {
            System.exit(0);
        }
    });
    JPanel panel2 = new JPanel();
    panel2.add(select);
    panel2.add(cancel);
    panel2.setLayout(new FlowLayout(FlowLayout.CENTER, 20, 0));
    frame.getContentPane().add(panel2);
    frame.setVisible(true);
 }

 public static void StudentGUI() 
 {
    JFrame frame1 = new JFrame("Input Username");
    frame1.setSize(350, 180);
    frame1.setDefaultCloseOperation(
      JFrame.EXIT_ON_CLOSE);

    JTextField tf = new JTextField("Input username here");
    JButton submit = new JButton("Submit");
    JPanel panel1 = new JPanel();
    panel1.add(tf);
    panel1.add(submit);
    frame1.getContentPane().add(panel1);
}    

1 个答案:

答案 0 :(得分:1)

您忘记在frame1.setVisible(true);方法中设置StudentGUI,并且您永远不会在第一种方法中关闭窗口(使用yourframe.dispose())。

所以试试:

public void actionPerformed(ActionEvent e)
        {
            if(sb.isSelected())
                StudentGUI();
            else if(lb.isSelected())
                System.out.println("Lecturer");
            else if(cdb.isSelected())
                System.out.println("Course Director");
            else if(ab.isSelected())
                System.out.println("Admin");
            yourframe.dispose();//don't know your frame variable
        }



public static void StudentGUI() 
 {
    JFrame frame1 = new JFrame("Input Username");
    frame1.setSize(350, 180);
    frame1.setDefaultCloseOperation(
      JFrame.EXIT_ON_CLOSE);
    frame1.setVisible(true);
     //code omitted
}