3

我无法使用 jcombobox 配置 jtable,我看过各种示例但没有成功。我有一个包含 3 列的表格和每个单元格的 Jcombobox。在第一个和最后一个 JCombobox 中有 Sports,在中央有一个 Criteria。

对于每一行,我必须使用第 3 列的值来制作表达式`(Sport s1, Criteria c, Sport s2);

我尝试使用自定义表模型,但使用 jcombobox 我不知道如何配置

@Override
        public Object getValueAt(int arg0, int arg1) {
            // TODO Auto-generated method stub
            return null;
        }

public Object setValueAt(int arg0, int arg1) {
                // TODO Auto-generated method stub
                return null;
            }

使用 JCombobox 选项获取和设置值。

`

我使用这个模型来实现我的表:

class MyTableModel extends AbstractTableModel {
        private static final long serialVersionUID = 1L;
        int numSports = DataSavedSports.loadNumeroSports();
        private final List<Sport> objects = DataSavedSports
                .loadListSports();

        private final String[] columnNames = { "Name Sport 1", "Criteria",
                "Name Sport 2" };

        private final Class<?>[] metaModell = new Class[] { String.class,
                Integer.class };

        public int getColumnCount() {
            return columnNames.length;
        }

        public int getRowCount() {
            return objects.size();
        }

        @Override
        public String getColumnName(int col) {
            return columnNames[col];
        }



        private Sport getRow(int row) {
            return objects.get(row);
        }

        @Override
        public Class<?> getColumnClass(int c) {
            if (c < metaModell.length)
                return metaModell[c];
            return Object.class;
        }

        @Override
        public boolean isCellEditable(int row, int col) {
            return true;
        }



        public List<Sport> getJobs() {
            return objects;
        }

        public void addRow(Sport v) {
            this.objects.add(v);
            fireTableDataChanged();
        }

        @Override
        public Object getValueAt(int arg0, int arg1) {
            // TODO Auto-generated method stub
            return null;
        }
    }

我用来设置 Jcombobox 的方法是这样的

        public void setColumnSports1(JTable table, TableColumn ColumnLav1) {
        // Set up the editor for the sport cells.
        final List<Sport> ListSports = DataSavedSports.loadListSports();
        final JComboBox comboBox1 = new JComboBox();
        for(Sport l : ListSports){
            comboBox1.addItem(l.getIdSport());
        }

        comboBox1.addItemListener(new ItemListener(){
              public void itemStateChanged(ItemEvent ie){
                  String str = (String)comboBox1.getSelectedItem();



                  System.out.println("TESTTTT"+str);
                  }
              });

        ColumnLav1.setCellEditor(new DefaultCellEditor(comboBox1));

        // Set up tool tips for the sport cells.
        DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
        renderer.setToolTipText("Click for combo box");
        ColumnLav1.setCellRenderer(renderer);
    }

附言

我必须使用 JFrame 中的表并获取所选 Jcombobox 项的数据,因此缺少多重继承,是另一个问题,因为覆盖了各种组件。

4

0 回答 0