如何在给定列中生成单个单元格作为JTable

时间:2016-07-19 06:06:38

标签: java swing jtable jcombobox

我的JTable中有一个下拉和简单的文本字段,并根据下拉列表中选择的特定值,我想将文本字段更改为下拉。

下面是我正在使用的代码,我可以根据选择将文本字段转换为下拉,但问题是它将列中的所有文本字段转换为下拉列表。我只想将所选行更改为下拉列表,其余应保留为文本字段。

        comboBox2.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent arg0) {

            String properties = (String) comboBox2.getSelectedItem();
            try {

                switch (properties) {
                case "Choose Object":
                    dd_OR = table.getColumnModel().getColumn(3);

                    model1 = new DefaultComboBoxModel<String>();
                    model1.addElement("");
                    model1.addElement("Snowboarding");
                    model1.addElement("Rowing");
                    model1.addElement("Knitting");

                    JComboBox comboBox3 = new JComboBox<String>(model1);
                    AutoCompleteDecorator.decorate(comboBox3);
                    dd_OR.setCellEditor(new DefaultCellEditor(comboBox3));
                    break;

                }

2 个答案:

答案 0 :(得分:2)

一种方法是覆盖getCellEditor(...)的{​​{1}}方法,以便您可以动态确定要使用的编辑器。

以下是一个简单的示例:

JTable

答案 1 :(得分:0)

将单元格编辑器设置为DefaultCellEditor将应用于列3中的所有行。请按照下面给出的上述代码

TableColumn column = table.getColumnModel().getColumn(3);
column.setCellEditor(new CustomTableCellEditor());

CustomTableEditor将是

import java.awt.Component;
import javax.swing.AbstractCellEditor;
import javax.swing.JComboBox;
import javax.swing.JTable;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableModel;

public class CustomTableCellEditor extends AbstractCellEditor implements TableCellEditor {

/**
 * 
 */
private static final long serialVersionUID = -6924557080981304281L;
private JComboBox<String> editor;
private String [] values = {"","Snowboarding", "Rowing", "Knitting"};

public CustomTableCellEditor() {
    // Create a new Combobox with the array of values.
    editor = new JComboBox<String>(values);
}

@Override
public Object getCellEditorValue() {
    // TODO Auto-generated method stub
    return editor.getSelectedItem();
}



@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int rowIndex, int colIndex) {
    // Set the model data of the table
    if(isSelected)
    {
        // Do Whatever you want
    }

    return editor;
}

}

希望它能帮到你

由于 拉库玛