Java 如何获取JTable中所选单元格(JComboBox)的当前位置 私有JPanel内容窗格; 专用JTable表; 私人JComboBox jcbtest; 私有DefaultTableModel表模型; jcbtest=新的JComboBox(); jcbtest.addItem(“第1项”); jcbtest.addItem(“第2项”); jcbtest.addItem(“第3项”); jcbtest.addActionListener(新ActionListener(){ 已执行的公共无效操作(操作事件e){ int curi=table.getSelectedRow(); int curj=table.getSelectedColumn(); showMessageDialog(null,“actionListener:+curi+”+curj); } }); jcbtest.addItemListener(新的ItemListener(){ 公共无效itemStateChanged(ItemEvent e){ int curi=table.getSelectedRow(); int curj=table.getSelectedColumn(); showMessageDialog(null,“itemstateChanged:+curi+”+curj); } }); table=新的JTable();字符串标题[]={”姓名", "部门", "职位"}; tablemodel=新的DefaultTableModel(标题,3); table=新JTable(tablemodel){ 私有静态最终长serialVersionUID=1L; 公共布尔值isCellEditable(int-rowIndex、int-columnIndex){ if(rowIndex==getRowCount()-1){ DefaultTableModel dtm=(DefaultTableModel)数据模型; addRow(新字符串[]{“,”}); } 返回true; } }; table.getColumnModel().getColumn(1).setCellEditor(新的DefaultCellEditor(jcbtest)); scrollPane.setViewportView(表);

Java 如何获取JTable中所选单元格(JComboBox)的当前位置 私有JPanel内容窗格; 专用JTable表; 私人JComboBox jcbtest; 私有DefaultTableModel表模型; jcbtest=新的JComboBox(); jcbtest.addItem(“第1项”); jcbtest.addItem(“第2项”); jcbtest.addItem(“第3项”); jcbtest.addActionListener(新ActionListener(){ 已执行的公共无效操作(操作事件e){ int curi=table.getSelectedRow(); int curj=table.getSelectedColumn(); showMessageDialog(null,“actionListener:+curi+”+curj); } }); jcbtest.addItemListener(新的ItemListener(){ 公共无效itemStateChanged(ItemEvent e){ int curi=table.getSelectedRow(); int curj=table.getSelectedColumn(); showMessageDialog(null,“itemstateChanged:+curi+”+curj); } }); table=新的JTable();字符串标题[]={”姓名", "部门", "职位"}; tablemodel=新的DefaultTableModel(标题,3); table=新JTable(tablemodel){ 私有静态最终长serialVersionUID=1L; 公共布尔值isCellEditable(int-rowIndex、int-columnIndex){ if(rowIndex==getRowCount()-1){ DefaultTableModel dtm=(DefaultTableModel)数据模型; addRow(新字符串[]{“,”}); } 返回true; } }; table.getColumnModel().getColumn(1).setCellEditor(新的DefaultCellEditor(jcbtest)); scrollPane.setViewportView(表);,java,swing,Java,Swing,第一次选择时,不显示所选单元格 在那之后,它给了我上次手术的位置 如何获取当前选定的单元格位置?如图所示,使用JComboBox构造一个,并将其用作。当应用于可编辑单元格时,每个单元格的当前选择将存储在表格模型中 我应该怎么做才能获得所选单元格的位置 JComboBox仅用作,其选择索引除了用作编辑器外没有任何意义。在所有其他时间,中选择的值都存储在TableModel中。给定特定值,可以使用getIndexOf()编辑器的方法,以确定它用作编辑器时的位置。当我第一次选择单元格时,getSele

第一次选择时,不显示所选单元格

在那之后,它给了我上次手术的位置

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

如图所示,使用
JComboBox
构造一个,并将其用作。当应用于可编辑单元格时,每个单元格的当前选择将存储在
表格模型中

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


JComboBox
仅用作,其选择索引除了用作编辑器外没有任何意义。在所有其他时间,中选择的值都存储在
TableModel
中。给定特定值,可以使用
getIndexOf()
编辑器的方法,以确定它用作编辑器时的位置。

当我第一次选择单元格时,getSelectedRow()和getSelectedColumn()的返回值是错误的,第二次单击单元格时,我可以得到正确的位置。我应该怎么做才能得到所选单元格的位置?我已经运行了您的代码,它具有相同的适用性。我已经在上面进行了详细阐述。@Shark:很高兴这有帮助;您可以通过单击左侧的来接受这个答案。
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);