2013-11-23 30 views
0

當我選擇第一個選項並選擇時,JFrame保持不變,我希望它關閉並移動到下一個被調用的方法中並打開一個不同的JFrame。任何人都可以看到問題嗎?我想不通我要去的地方錯了JButton選擇後的移動方法

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); 
}  
+0

什麼是您的代碼當前做什麼? –

+0

它創建一個帶有4個JRadioButtons和2個JButton的JFrame,一個選擇按鈕和一個取消按鈕。取消按鈕殺死程序。我想接下來打開另一個JFrame到其他菜單。當我運行它時,它會打開宏偉,但當我選擇選項 – user3025755

+0

時,它不會繼續。請考慮發佈更多代碼。不是所有的代碼,但足以編譯,運行和顯示你的問題。注意,除了大多數用戶不喜歡使用JFrame作爲用戶界面的基礎之外,通常不是一個好主意。 –

回答

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 
} 
+0

明白了,只是一個愚蠢的錯誤,只需要一套新的眼睛。謝謝 – user3025755

+0

@ user3025755有時我們都會這樣做,不要擔心:) – imulsion