2017-08-08 63 views
0

我有一些代碼,當用戶單擊某些按鈕時,用於更改程序中的txtArea然後ActionListener執行操作。Returing的字符串的難度和清除txtArea,當選擇一個JComboBox選項

reset.addActionListener(new ButtonsAction()); 
hint.addActionListener(new ButtonsAction()); 
solve.addActionListener(new ButtonsAction()); 
newPuzzle.addActionListener(new ButtonsAction()); 

public class ButtonsAction implements ActionListener{ 

    @Override 
    public void actionPerformed(ActionEvent e) {//implements actionPerformed 
     Object button=e.getSource(); 
     if(button.equals(hint)) 
     { 
      jtxtar.setText("Hint button clicked!"); 
     } 
     else if(button.equals(reset)) 
     { 
      jtxtar.setText("Reset button clicked!"); 
     } 
     else if(button.equals(solve)) 
     { 
      jtxtar.setText("Solve button clicked!"); 
     } 
     else 
     { 
      jtxtar.setText("New Puzzle button clicked!"); 
     } 

    } 
} 

可是我也有選擇當一個人的時候,是三個選項也應該清除該字段的JComboBox,但然後添加一個消息,如「難度改爲......」。

查找JComboBox的工作方式,我相信我需要使用ItemListener而不是ActionListener。然而,看這些教程並沒有幫助我收集這些信息。但是我找到了一些說我需要一個全新的Listener類來實現它的東西。

diffBox.addItemListener(new CBoxAction()); 

    public class CBoxAction implements ItemListener{ 


    @Override 
    public void itemStateChanged(ItemEvent event) { 

     if(event.getStateChange() == ItemEvent.SELECTED) { 
      diffBox.getSelectedItem(); 
      jtxtar.setText(); 
     } 

的這裏的問題是,我不知道我應該這樣做是爲了告訴jtxtar清楚,並告訴他們改變到困難的用戶。

+0

不知道是什麼樣子,我現在得到這個工作,所以它看起來很笨重,但它的工作原理。 – Abraxas

回答

0

重新審視Oracle的JComboBox演示之後,我得到了我的答案。我把這個添加到我的else語句中,如果添加最後一個語句,然後添加設置jtxtar的代碼來告訴用戶他們的難度。不需要另一個類,因爲它也使用ActionListener。

else if(button.equals(newPuzzle)) 
     { 
      jtxtar.setText("New Puzzle button clicked!"); 
     } 
     else { 
      JComboBox diffBox = (JComboBox)e.getSource(); 
      String difficulties = (String)diffBox.getSelectedItem(); 
      jtxtar.setText(difficulties); 
     } 

現在,當您單擊組合框並選擇一個新的難度時,jtxtar會清除並說出困難。

相關問題