2016-11-28 13 views
0

が動作していないオーバーライド:それを実行したときJComboBoxのgetSelectedItemが、私はこの静的メソッド使用して、私のJComboBoxのgetSelectedItemメソッドをオーバーライドしようとしているmは

JComboBoxTools.setupID_TITLE_ComboBox(J_Users_Profile,"profiles"); 

しかし:

public static void setupID_TITLE_ComboBox(JComboBox jComboBox, String tableName) throws SQLException { 
    // query to select ID and TITLE from profiles table 
    String query = "SELECT ID,TITRE FROM " + tableName + ";"; 
    ResultSet myJComboResultSet = SQLTools.ExecuteQuery(query); 

    ArrayList visualItems = new ArrayList(); // the Items of my combobox [item1,item2] 
    ArrayList idItems = new ArrayList(); // the corresponding IDs for each item [id1,id2] 

    while (myJComboResultSet.next()) { 
     visualItems.add(myJComboResultSet.getObject("TITRE")); // filling items set 
     idItems.add(myJComboResultSet.getObject("ID")); // filling IDs set 
    } 

    System.out.println("IDItems=" + idItems); // checking that my Items are filled 
    System.out.println("visualItems=" + visualItems); // checking that my IDs are filled 

// creating a combobox of previous items 
    jComboBox = new JComboBox(visualItems.toArray()) { 
     ArrayList values = idItems; 

// overriding the getSelectedItem to return the corresponding selected item's ID 
     @Override 
     public Object getSelectedItem() { 
      Object get = values.get(super.getSelectedIndex()); 
      System.out.println("get = " + get); 
      return get; 
     } 

    }; 

} 

を、私は別のフレームからこのメソッドを呼び出すメートル動作しません。 出力:

visualItems = [管理者、教師、生徒]

IDItems = [0,3,5]

選択された項目の戻り値は:教師

何をすべきかわからない教師のIDである3を返すようにしたい。

this linkありがとう:

フルプロジェクトが下にあります。私はmapComboBoxModelに

public static void setupID_TITLE_ComboBox(JComboBox jComboBox, String tableName) throws SQLException { 

    String query = "SELECT ID,TITRE FROM " + tableName + ";"; 
    ResultSet myJComboResultSet = SQLTools.ExecuteQuery(query); 

    HashMap myMap = new HashMap(); 
    while (myJComboResultSet.next()) { 
     myMap.put(myJComboResultSet.getObject("TITRE"), myJComboResultSet.getObject("ID")); 
    } 

    jComboBox.setModel(new MapComboBoxModel(myMap) { 

     @Override 
     public Object getValue(Object selectedItem) { 
      return map_data.get(selectedItem); //To change body of generated methods, choose Tools | Templates. 
     } 

    }); 


} 

を使用して、私の希望する値を取得

+0

ここで実際に何を達成しようとしていますか?選択した値を印刷したいだけですか? – Thibstars

+0

私のコンボボックスのアイテムは、アイテムが選択されたときに[SuperAdmin、Student、Teacher]です。データベースの戻り値の例(Student)です。学生プロフィールはIDを持っています。プロファイル(私はバックエンドで挿入クエリを生成します) –

+0

私のクエリは、整形され、生成されたが、私はプロファイルタイトルではないIDをしたいです: –

答えて

0

私はIDを返すためのgetValueをオーバーライド。

if (myComponent instanceof JComboBox) { 
      JComboBox jComboBox = (JComboBox) myComponent; 
      MapComboBoxModel model = (MapComboBoxModel) jComboBox.getModel(); 
      values+=""+model.getValue(model.getSelectedItem())+",";     
     } 
関連する問題