2015-06-19 54 views
0

當前的項目正在進行,我需要將JTable中某列的所有單元格設置爲JComboBoxes。它們的項目對於所有行都是相同的,並且從SQL Server表中提取。程序運行時,它將使用SQL Server表中的值填充整個JTable。在這一點上一切正常,但是當用戶單擊列來顯示JComboBox和項目顯示時,該單元格上的值將被覆蓋JComboBox我想要發生的事情是用值打開JComboBox,並向用戶「提示」該單元格中的最後一個值(消失的那個值),然後下拉並選擇所述值。當它被點擊打開一個JComboBox時,JTable單元會丟失值

有沒有辦法輕鬆做到這一點?

這是我如何加入項目的所有JComboBoxes

TableColumn col_cod_tipo_verba = jtab_verba.getColumnModel().getColumn(3); JComboBox box_tab_tipo_verba = new JComboBox(); ResultSet rs = Glob.conecta_sql().prepareStatement("SELECT * FROM tab_tipo_verba").executeQuery(); while (rs.next()) { box_tab_tipo_verba.addItem(rs.getString(1)); } col_cod_tipo_verba.setCellEditor(new DefaultCellEditor(box_tab_tipo_verba));

+0

如果在填充後調用box_tab_tipo_verba.setSelectedItem(theCellVaue)會怎麼樣? – StanislavL

+0

但是我怎麼知道CellValue?我發佈的代碼部分是靜態的,它只是將該列的所有JTable的單元格變成JComboBox。但是你的答案可能會與另一個代碼一起工作。我會嘗試一下,並在一秒內回報 – MVR

+0

我試圖用MouseListener獲取單元格中的值,但沒有奏效。如果我直接單擊JComboBox,Listener不會觸發。我需要另一種獲取單元格數據的方式。 – MVR

回答

1

您可以覆蓋的方法

Component getTableCellEditorComponent(JTable table, Object value, 
             boolean isSelected, 
             int row, int column) 

在呼叫col_cod_tipo_verba.setCellEditor(new DefaultCellEditor(box_tab_tipo_verba));after super.getTableCellEditorComponent使用要設置的值在編輯器中

+0

感謝您的回答!現在,這已經幫助我在每個單元**的值被JComboBox覆蓋之前獲得它的值;現在我需要設置JComboBox中的對象等於我得到的字符串。 – MVR

+0

然後將答案標記爲正確。 – StanislavL

+0

對不起,我沒有完成。現在編輯。 – MVR

相關問題