2017-02-16 57 views
0
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); 

第一次選擇,它沒有顯示出所選單元格如何讓JTable中選定的單元格(JComboBox中)的當前位置

之後,它給了我前面操作的位置

如何獲得當前選定的細胞位置?

回答

1

使用JComboBox<String>構建DefaultCellEditor,如圖所示here,並將其用作cell editor。應用於可編輯單元格時,每個單元格的當前選擇將存儲在TableModel中。

我應該怎麼做才能得到選定的細胞的位置?

JComboBox僅用cell editor,這是選擇指數是沒有意義的,除了當使用作爲一個編輯。在其他時間,所選值存儲在TableModel中。給定一個特定的值,您可以使用編輯器DefaultComboBoxModelgetIndexOf()方法來確定它在用作編輯器時的位置。

+0

當我第一次選擇一個單元格時,getSelectedRow()和getSelectedColumn()的返回值是錯誤的,第二次單擊單元格時,我可以得到正確的位置。我應該做些什麼來獲得選擇單元的位置?我已經運行了你的代碼,它有同樣的懇求。 – Shark

+0

我已經詳細闡述過了。 – trashgod

+0

真誠感謝您的回答 – Shark

相關問題