2017-01-04 3 views
-1

Ich versuche, die ausgewählte ID meiner JComboBox mit Abteilungs-Klasse als Referenz, die eine ID zurückgeben. Aber wenn ich versuche, das in eine andere Klasse zurückzugeben und sie zu benutzen. Es druckt nur den ersten Index und hört nicht auf meine Aktion, die ich innerhalb der JComboBox durchgeführt habe.Übergabe der ausgewählten ID an eine andere Klasse

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); 
    } 
} 

Wie Sie nur oben print() Methode sehen kann sogar den ersten Index bekommt obwohl ich die JComboBox mit ActionListener irgendwelche Gründe, warum registrieren? :)

+0

Geben Sie eine [mcve] ein. Ein MCVE würde Importe haben, nur eine ** public ** -Klasse (andere Klassen eingefügt, nachdem es in Ordnung ist), eine 'main (String [])' -Methode, um alles auszuführen, sobald es sauber kompiliert wird, ohne irgendwelche Änderungen. –

Antwort

0

können Sie versuchen, die ComboBox ein Modell wie DefaultComboBoxModel zu geben

cbDepartment.setModel() 

verwenden, dann die Funktion .getmodel mit() auf der Combobox können Sie das Modell und dann das ausgewählte Element erhalten.

Verwandte Themen