2017-01-04 10 views
-1

私はJComboBoxの選択されたIDをDepartmentクラスを使ってidを返す参照として返そうとしています。しかし、私はこれを別のクラスに戻して使用しようとしています。最初のインデックスだけを表示して、JComboBox内で実行した自分のActionをリッスンしません。選択したIDを別のクラスに渡す

public class Frame extends JInternalFrame 
{ 
    JComboBox cbDepartment; 
    public Frame() 
    { 
    super("Frame",true,true,true,true); 
    addToPane(getContentPane()); 
    setVisible(true); 
    pack(); 
    } 


    private void addToPane(final Container pane) 
    { 
     JPanel panel = new JPanel(); 
     pane.add(panel); 

     cbDepartment.setActionCommand("Department"); 
     cbDepartment.addActionListener(listener); 

     panel.add(cbDepartment); 

    } 

    ActionListener listener = new ActionListener() 
    { 
     @Override 
     public void actionPerformed(ActionEvent e) 
     { 
     if("Department".equals(e.getActionCommand())) 
     { 
      Department item = (Department) cbDepartment.getSelectedItem(); 
      int departmentId = item.getId(); 

      System.out.println("Your id is " +departmentId); 
     } 
     } 
    } 
    //RETURNING FOR ABLE TO USE IN ANOTHER CLASS 
    public int getSelectedItem() 
    { 
     Department item = (Department) cbDepartment.getSelectedItem(); 
     return item.getId(); 
    } 
} 

public class Model 
{ 
    Frame theView; 
    public class Model(Frame theView) 
    { 
     this.theView = theView; 
     print(); 
    } 

    public void print() 
    { 
     int id = theView.getSelectedItem(); 
     System.out.println(id); 
    } 
} 

私はActionListenerいかなる理由でJComboBoxを登録するにもかかわらず、あなただけの最初のインデックスを取得しますprint()法上見ることができるように? :)コンボボックス上

+0

投稿する[mcve]。 MCVEにはimport、唯一のpublic **クラス(他のクラスはうまく貼り付けられます)、変更なしできちんとコンパイルされた後にすべてを実行するmain(String [])メソッドがあります。 –

答えて

0

あなたが(そして、関数.getmodelを使用して、コンボボックスに

cbDepartment.setModel() 

を使用したDefaultComboBoxModelようなモデルを与えることを試みることができるが)あなたはモデルを取得し、選択した項目を取得することができます。

関連する問題