簡體   English   中英

我可以將組合框添加到JTable的特定單元格嗎?

[英]can i add the combobox into particular cell of the JTable?

我想將組合框添加到JTable的單元格中。

model=new DefaultTableModel(data,col);
JTableHeader head=new JTableHeader();
head.setBackground(Color.BLUE);
table=new JTable(model);
table.add(head);
JComboBox combo = new JComboBox();
combo.addItem("Names");
combo.addItem("Antony");
combo.addItem("Victor");
combo.addItem("Ramkumar");
table.add(combo);

但是我無法在單元格中找到組合框。 可以設置組合框嗎?

您需要設置JTable的TableCellEditor。 最好搜索Java教程,但這是一個簡短的解釋。

JTable使用三個主要的類來工作:

1)TableModel:它的功能是說表有多少行和多少列並為Table的數據提供服務,它的主要方法是getValue(row,col)和setValue(value,row,col)。 並觸發事件以通知JTable重新繪制。

2)TableCellRenderer:它的主要目的是在JTable的單元格中繪制組件。 該組件僅塗有油漆:無效! 如果繪制JComboBox,則單擊它不會消失;如果繪制JCheckbox,則不會選擇/取消選擇。

3)TableCellEditor:它的主要目的是在JTableCell內繪制一個組件以編輯單元格的值。 它接收事件並決定何時開始編輯,然后調用getTableCellEditorComponent方法以返回編輯器組件。 返回的組件必須具有啟動事件,以便TableCellEditor知道何時停止編輯並獲取值,並使用它來調用TableModel.setvalue ...或取消編輯。

因此,要在JTable中顯示JComboBox,必須創建自己的TableCellEditor,如果您以前沒有做過,那么就不容易。

查看此Java教程,並在此頁面中搜索“使用組合框作為編輯器”

嘗試以下操作:它對我有用。.單擊單元格以查看組合框。

 private void comboloader() {
        try {
            TableColumn gradeColumn = jTable1.getColumnModel().getColumn(0);
            JComboBox comboBox = new JComboBox();

            comboBox.removeAllItems();

            try {
                comboBox.addItem("Item 1");
                comboBox.addItem("Item 2");
                comboBox.addItem("Item 3");

            } catch (NullPointerException e) {
            } catch (Exception e) {
                e.printStackTrace();
            }
            gradeColumn.setCellEditor(new DefaultCellEditor(comboBox));
        } catch (Exception e) {
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM