,可以通过自定义TableCellRenderer来实现。
首先,创建一个自定义的TableCellRenderer类,继承DefaultTableCellRenderer,并重写getTableCellRendererComponent方法。在该方法中,根据需要在JTable中显示的数据类型,返回相应的组件,这里是JComboBox。
import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import java.awt.*;
public class ComboBoxTableCellRenderer extends DefaultTableCellRenderer {
private JComboBox comboBox;
public ComboBoxTableCellRenderer(JComboBox comboBox) {
this.comboBox = comboBox;
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
comboBox.setSelectedItem(value);
return comboBox;
}
}
然后,在创建JTable时,将需要显示JComboBox的列设置为使用自定义的TableCellRenderer。
JTable table = new JTable(data, columnNames);
TableColumn comboBoxColumn = table.getColumnModel().getColumn(columnIndex);
comboBoxColumn.setCellRenderer(new ComboBoxTableCellRenderer(comboBox));
其中,data是JTable的数据模型,columnNames是列名数组,columnIndex是需要显示JComboBox的列的索引。
这样,在JTable中,对应的列将以JComboBox的形式显示数据,而不需要先单击。
领取专属 10元无门槛券
手把手带您无忧上云