如何在JTable中获取所选单元格(JComboBox)的当前位置

时间:2017-02-16 13:12:39

标签: java swing

private JPanel contentPane;
private JTable table;
private JComboBox<String> jcbtest;
private DefaultTableModel tablemodel;

    jcbtest=new JComboBox<String>();
    jcbtest.addItem("item1");
    jcbtest.addItem("item2");
    jcbtest.addItem("item3");
    jcbtest.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){
            int curi=table.getSelectedRow();
            int curj=table.getSelectedColumn();
            JOptionPane.showMessageDialog(null, "actionListener:"+curi+"    "+curj);

        }
    });

    jcbtest.addItemListener(new ItemListener(){
        public void itemStateChanged (ItemEvent e){
            int curi=table.getSelectedRow();
            int curj=table.getSelectedColumn();
            JOptionPane.showMessageDialog(null, "itemstateChanged:"+curi+"  "+curj);               
        }
    });

    table = new JTable();String title[]={"姓名", "部门", "职位"};
    tablemodel=new DefaultTableModel(title, 3);
    table = new JTable(tablemodel){
        private static final long serialVersionUID=1L;
        public boolean isCellEditable( int rowIndex, int columnIndex){
            if( rowIndex == getRowCount() - 1 ){
                DefaultTableModel dtm=(DefaultTableModel)dataModel;
                dtm.addRow(new String[]{"","",""});
            }
            return true;
        }
    };
    table.getColumnModel().getColumn(1).setCellEditor(new DefaultCellEditor(jcbtest));

    scrollPane.setViewportView(table);

第一次选择时,它显示没有选定的单元格

之后,它给了我以前操作的位置

如何获取当前选定的单元格位置?

1 个答案:

答案 0 :(得分:1)

使用JComboBox<String>构建DefaultCellEditor,如图所示here,并将其用作cell editor。应用于可编辑单元格时,每个单元格的当前选择将存储在TableModel

  

我应该怎样做才能获得所选单元格的位置?

JComboBox仅使用 作为cell editor,除非正在使用作为编辑器,否则它的选择索引毫无意义。在所有其他时间,所选值存储在TableModel中。给定一个特定值,您可以使用编辑器DefaultComboBoxModelgetIndexOf()方法来确定它在用作编辑器时的位置。