2017-06-21 112 views
0

我必須確保當按下開始遊戲按鈕打開遊戲框架。Java - 開始按鈕和新的JFrame

這是菜單:

enter image description here

這是控制器類:

@Override 
public void actionPerformed(ActionEvent e) { 
    JRadioButton source = (JRadioButton)e.getSource(); 
    JButton sourceButton = (JButton)e.getSource(); 

    if(source.isSelected() && source.getText().equals("Custom")){ 
     MenuView.heightLabel.setEnabled(true); 
     MenuView.height.setEnabled(true); 

     MenuView.widthLabel.setEnabled(true); 
     MenuView.width.setEnabled(true); 

     MenuView.minesLabel.setEnabled(true); 
     MenuView.mines.setEnabled(true); 
    } 
    else{ 
     MenuView.heightLabel.setEnabled(false); 
     MenuView.height.setEnabled(false); 

     MenuView.widthLabel.setEnabled(false); 
     MenuView.width.setEnabled(false); 

     MenuView.minesLabel.setEnabled(false); 
     MenuView.mines.setEnabled(false); 
    } 

    if(source.getText().equals("Beginner")){ 
     if(sourceButton.getText().equals("Start Game")){ 
      MenuView.fullRandom = new FullRandomGrid(ROW_BEGINNER, COLUMN_BEGINNER, MINE_BEGINNER); 
      Frame frame = new Frame(MenuView.fullRandom); 
      frame.setSize(270, 380); 
      frame.setResizable(false); 
      frame.setVisible(true); 

     } 
    } 
} 

的問題是,當我按Start Game我有這樣的例外:

線程「AWT-EventQueue-0」中的異常java.lang.ClassCastException: javax.swing.JButton中的不能轉換爲javax.swing.JRadioButton

+0

你可以發佈完整的堆棧跟蹤嗎? –

+0

你爲什麼期望** e.getSource()**返回** JButton **和** JRadioButton **的實例? JRadioButton與JButton沒有**繼承**關係,這意味着e.getSource()返回的**對象**只能是一個** JButton **或** JRadioButton **實例,但在我看來它是JButton ,因爲用戶按下JButton :) – ShayHaned

+0

*「.. new JFrame ..」*請參閱[使用多個JFrames,好/壞實踐?](http://stackoverflow.com/q/9554636/418556) –

回答

2

問題是在這條線:

JRadioButton source = (JRadioButton)e.getSource(); 

拋出,表明代碼已經試圖將對象強制轉換到 子類的它不是一個實例。

JRadioButton不是e.getSource()的子類,所以會引發ClassCastException。


JRadioButton source = (JRadioButton)e.getSource(); 
JButton sourceButton = (JButton)e.getSource(); 

如何e.getSource()可以在兩個定投,沒有孩子父母的關係。

+0

我該如何解決這個問題? – nomeNano

+0

你已經在全球引用了你的'JRadioButton'?如果沒有製作出來並在你的方法中使用。 – Aryan

+0

你能告訴我應該如何修改代碼嗎? – nomeNano

0

的問題是線JRadioButton source = (JRadioButton)e.getSource(); - 您按JButton對象,這會導致事件,那麼你就錯了鑄造JButton的類型,一個JRadioButton。