0

我的程序中正在加载一个 csv 文件。它包含城市和地区以及其他一些东西(这里不重要)。选择 csv 后,我将数据加载到几个组合框中。

1 事情不正常,我有一个包含所有城市的组合框,现在我需要根据从组合框中的选择列出该国家/地区的所有地区。

这是事件:

 private void cboProvinciesItemStateChanged(java.awt.event.ItemEvent evt) {                                               
   //System.out.println(Arrays.asList(gemeentesPerProvincie(gemeentes)));
    invullenListProvincie(gemeentes);
}      

这是方法:

      private void invullenListProvincie(ArrayList<Gemeentes> gemeentes) {

    Gemeentes gf = (Gemeentes) cboProvincies.getSelectedItem();
    DefaultListModel model = new DefaultListModel();
    JList list = new JList(model);

    for (Gemeentes gemeente : gemeentesPerProvincie(gemeentes)) {
        model.addElement(gemeente);
    }

    lstGemeentes.setModel(model);

}

这是过滤所有等于组合框中选择的区域的方法:

    private ArrayList<Gemeentes> gemeentesPerProvincie(ArrayList<Gemeentes> gemeentes) {

    String GemPerProv = (String) cboProvincies.getSelectedItem();
    ArrayList<Gemeentes> selectie = new ArrayList<Gemeentes>();
    for (Gemeentes gemeente : gemeentes) {
        if (gemeente.getsProvincie().equals(GemPerProv)) {
            selectie.add(gemeente);
        }
    }

    return selectie;
}

我确信错误是我尝试将项目添加到 jList gemeentesPerProvincie() 的方式,我已经尝试了很多东西。我真的希望有人能看到我明显缺少的东西......

4

1 回答 1

2
  • use AutoComplete JComboBox / JTextField instead of plain JCombobox

  • use JTable with one Column (maybe without JTableHeader)

  • create TableModel with two Columns, cities and areas, then both JComboBox and JTable have got the same data, from JTable to remove Column cities (JTable.removeColumn() is only about JTables view, data are still presents in the TableModel)

  • add RowFilter to JTable to the Column contains cities, output to the JTables view will be only areas for cities,

  • value for RowFilter will be became from JComboBox.getSelectedItem

  • data for JCombobox are from TableModel

于 2012-06-20T21:04:39.320 回答