如何在jtable中配置jcombobox以获取表达式

时间:2012-06-21 14:12:57

标签: java jtable jcombobox tablecelleditor

我无法使用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);
    }

PS

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

0 个答案:

没有答案