首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在不先单击的情况下获取要在JTable中显示的JComboBox

,可以通过自定义TableCellRenderer来实现。

首先,创建一个自定义的TableCellRenderer类,继承DefaultTableCellRenderer,并重写getTableCellRendererComponent方法。在该方法中,根据需要在JTable中显示的数据类型,返回相应的组件,这里是JComboBox。

代码语言:java
复制
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。

代码语言:java
复制
JTable table = new JTable(data, columnNames);
TableColumn comboBoxColumn = table.getColumnModel().getColumn(columnIndex);
comboBoxColumn.setCellRenderer(new ComboBoxTableCellRenderer(comboBox));

其中,data是JTable的数据模型,columnNames是列名数组,columnIndex是需要显示JComboBox的列的索引。

这样,在JTable中,对应的列将以JComboBox的形式显示数据,而不需要先单击。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券