2013-05-11 77 views
2

我目前正在Java中製作一個自定義的Minecraft服務器啓動器,並且已經進入了一個早期階段,我實際上喜歡按鈕來做某件事。我設法得到一個按鈕來響應(開始按鈕),但只要我放入第二個if語句以使停止按鈕響應,以前工作的開始按鈕現在不會響應。我無法測試停止按鈕,因爲它默認是禁用的。 當我切換if語句時(首先放置stopBtn actionlistener),開始按鈕再次工作,但停止按鈕不起作用。 請有人看看代碼和幫助?Java - 動作偵聽器只響應一個if語句?

package custommcserver; 

import java.awt.GridLayout; 
import java.awt.event.*; 
import javax.swing.*; 

class Window extends JFrame implements ActionListener 
{ 
    JPanel mainPnl = new JPanel(new GridLayout(2,1)); 
    JPanel propPnl = new JPanel(); 
    JButton startBtn = new JButton("Start"); 
    JButton stopBtn = new JButton("Stop"); 
    JButton propBtn = new JButton("Properties"); 

    public Window() 
    { 
     super("Custom Minecraft Server Launcher") ; 
     setSize(500,200) ; 
     setDefaultCloseOperation(EXIT_ON_CLOSE) ; 
     add(mainPnl) ; 
     mainPnl.add(startBtn); 
     mainPnl.add(stopBtn); 
     mainPnl.add(propBtn); 
     stopBtn.setEnabled(false); 
     startBtn.addActionListener(this); 
     stopBtn.addActionListener(this); 
     propBtn.addActionListener(this); 
     setVisible(true); 
    } 

    public void actionPerformed(ActionEvent event) 
    { 

     if (event.getSource() == stopBtn); 
     { 
      stopBtn.setEnabled(false); 
      startBtn.setEnabled(true); 
     } 

     if (event.getSource() == startBtn); 
     { 
      stopBtn.setEnabled(true); 
      startBtn.setEnabled(false); 
     } 

     } 
} 
+1

如果你已經使用了一個良好的IDE的IntelliJ一樣,那麼IDE將有自動指出錯誤給你。您應該從現在開始考慮使用IDE來擺脫這些拼寫錯誤。 – 2013-05-11 08:42:22

+0

@ExtremeCoders我個人更喜歡eclipse到IntelliJ,因爲它簡單易用。我認爲這對OP – imulsion 2013-05-11 08:43:45

回答

6

你已經在if語句後面放了分號。把他們帶走:

if (event.getSource() == stopBtn) 
     { 
      stopBtn.setEnabled(false); 
      startBtn.setEnabled(true); 
     } 

     if (event.getSource() == startBtn) 
     { 
      stopBtn.setEnabled(true); 
      startBtn.setEnabled(false); 
     } 
+0

會更好,謝謝!我對Java很陌生,所以從錯誤中學習總是很好的。我將從現在開始嘗試記住這一點。 – 2013-05-11 08:36:16

+1

@ user2372416不用擔心,我隨時準備幫忙。我們都犯這些錯誤。既然它有效,請考慮接受我的答案。 – imulsion 2013-05-11 08:37:30

+0

在我職業生涯的早期,我花了一些時間嘗試優化一些嵌入式代碼,然後才意識到犯了這個錯誤。從那以後,我總是在「if」陳述中加入大括號。 (把大括號放在同一行上,這是Java約定,羞愧的是編譯器沒有強制執行它。) – 2013-05-11 10:04:00