2013-08-21 75 views
0

我有JButtons「暫停」和「取消暫停」。當用戶暫停程序時,暫停按鈕應該被禁用,並且應該啓用取消暫停按鈕。我不知道該怎麼寫。取消暫停按鈕起作用,但暫停按鈕不起作用,因爲「解除暫停不能解決」。如何處理它?有我的代碼:由另一JButton啓用/禁用JButton

final JButton pause = new JButton("Pause"); 

    pause.addActionListener(new ActionListener() { 

     public void actionPerformed(ActionEvent e) { 
      try { 
       Url.pauseThread(); 
       pause.setEnabled(false); //this works 
       unpause.setEnabled(true); //this does NOT work - "not resolved" 

      } catch (InterruptedException e1) { 

       e1.printStackTrace(); 
      } 

     } 
    }); 

    final JButton unpause = new JButton("Unpause"); 

    unpause.addActionListener (new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      try { 
       Url.resumeThread(); 
       pause.setEnabled(true); // this works 
       unpause.setEnabled(false); // this works 
      } catch (InterruptedException e1) { 

       e1.printStackTrace(); 
      } 
     } 
    }); 
+0

從發佈的代碼判斷,它是未解決的,因爲它只是該方法的本地(我假設你有一個'init'方法或上面的代碼在你的構造函數中)。嘗試全局聲明你的按鈕;那應該解決你的問題。 –

回答

2

聲明暫停和取消暫停按鈕,然後添加偵聽器。

final JButton pause = new JButton("Pause"); 
final JButton unpause = new JButton("Unpause"); 
    pause.addActionListener(new ActionListener() { 

     public void actionPerformed(ActionEvent e) { 
      try { 
       Url.pauseThread(); 
       pause.setEnabled(false); //this works 
       unpause.setEnabled(true); //this does NOT work - "not resolved" 

      } catch (InterruptedException e1) { 

       e1.printStackTrace(); 
      } 

     } 
    }); 



    unpause.addActionListener (new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      try { 
       Url.resumeThread(); 
       pause.setEnabled(true); // this works 
       unpause.setEnabled(false); // this works 
      } catch (InterruptedException e1) { 

       e1.printStackTrace(); 
      } 
     } 
    }); 

基本上,你是從在暫停按鈕偵聽取消暫停按鈕調用setEnabled之前取消暫停按鈕,甚至被宣佈。

+0

這個作品,謝謝! – slanecek

+0

@slanecek不客氣。如果它解決了你的問題,考慮接受答案。 –

+1

或者,我假設他的類中有多個'JButton',你應該也建議他的類應該實現'ActionListener',並且只是檢查它所在的JButton而不是創建一個新的ActionListener '爲每個'JButton'。 –