2015-04-05 83 views
0

我想添加一個ActionListener到我的組合框。我想在從框中選擇一個項目時打開一個表單。我成功地在JButton上實現它,但我無法弄清楚如何在組合框中執行它。有人可以幫我嗎?與ActionListener和if語句的組合框

JComboBox<String> valBox = new JComboBox<>(); 

    valBox.addItem("Apparat"); 
    valBox.addItem("Smycke"); 
    valBox.addItem("Aktie"); 
    södra.add(valBox); 

    valBox.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      if (valBox.getSelectedIndex() == 0) 
       nyLyss.ApparatForm.form1(); 
     } 
    }); 

我wan't當選擇第一項要執行的代碼是這一個:

class nyLyss implements ActionListener{ 
    public void actionPerformed(ActionEvent ae) { 
     try{ 
      ApparatForm form1 = new ApparatForm(); 

      int svar = JOptionPane.showConfirmDialog(Layout.this, form1); 
      if(svar != JOptionPane.OK_OPTION) 
       return; 
      String namn = form1.getNamn(); 
      int inköpspris = form1.getPris(); 
      int slitage = form1.getPris(); 
    //  saker ap = new saker(namn, inköpspris, slitage); 
    //  alla.add(ap); 

     }catch(NumberFormatException e){ 
      JOptionPane.showMessageDialog(Layout.this, "Felaktig indata!"); 
     } 
    } 
} 

謝謝! :)

+1

*我在JButton *上成功實現了它:然後在組合框中添加完全相同的ActionListener,並將其添加到按鈕中,它應該可以工作。 – 2015-04-05 07:37:37

+2

我投票結束這個問題作爲題外話,因爲這個問題已在官方教程中介紹 - [如何使用組合框:在組合框中處理事件](https://docs.oracle.com/javase/教程/ uiswing /組件/ combobox.html#聽衆) – 2015-04-05 07:38:04

回答

0

我會解決問題與我的組合框上的ItemStateChanged監聽器。這裏有一個名爲「mycombobox」的組合框的簡短例子。

private void mycomboboxItemStateChanged(java.awt.event.ItemEvent evt) {            

    System.out.println(mycombobox.getSelectedItem()); 

} 

其結果是,該應用程序在組合框「mycombobox」所選擇的項目的每一個變化之後打印出所選擇的項目。