gpt4 book ai didi

java - 在下拉列表始终可见的 JTable 中创建 JComboBox

转载 作者:搜寻专家 更新时间:2023-10-31 20:11:30 25 4
gpt4 key购买 nike

在 Swing 中,可以在 JTable 中创建 JComboBox,如 this guide 所示来自甲骨文。他们有一张可爱的图片展示了这一点:

enter image description here

但是,无法显示的是,如果您没有单击该单元格,则下拉箭头不可见,它看起来就像一个普通的文本标签,如下所示:

enter image description here

你可以看到 knitting 有下拉箭头,因为我只是点击了它,但其他的没有。遗憾的是,这不太理想,因为没有视觉提示可以单击单元格以显示选项列表。换句话说,“运动”列看起来与“姓氏”列相同。其中一个是下拉菜单,另一个不是,但它们在视觉上看起来是一样的,除非您碰巧点击其中一个。

有什么方法可以在 Swing 中完成吗?

编辑:为了澄清,我想要的是“运动”列中的所有单元格都有指示下拉菜单的箭头,即使它们不是最少点击的一个。基本上,无论我是否点击它,我都希望它看起来像一个组合框。

最佳答案

我不确定您是否理解 JTable 中“呈现器”和“编辑”模式之间的区别。在编辑模式下,示例中 Sport 列中的所有单元格都由组合框支持。

我相信您正在尝试做的是...

Example

这会使 UI 困惑(恕我直言)

因此基于 here 中的示例,我修改了代码以更改 Sport 列的默认单元格渲染器

public void setUpSportColumn(JTable table,
TableColumn sportColumn) {
//Set up the editor for the sport cells.
JComboBox comboBox = new JComboBox();
DefaultComboBoxModel model = new DefaultComboBoxModel();
model.addElement("Snowboarding");
model.addElement("Rowing");
model.addElement("Knitting");
model.addElement("Speed reading");
model.addElement("Pool");
model.addElement("None of the above");
comboBox.setModel(model);
sportColumn.setCellEditor(new DefaultCellEditor(comboBox));

model = new DefaultComboBoxModel();
model.addElement("Snowboarding");
model.addElement("Rowing");
model.addElement("Knitting");
model.addElement("Speed reading");
model.addElement("Pool");
model.addElement("None of the above");
//Set up tool tips for the sport cells.
ComboBoxTableCellRenderer renderer
= new ComboBoxTableCellRenderer();
renderer.setModel(model);
sportColumn.setCellRenderer(renderer);
}

并添加了这个...

public class ComboBoxTableCellRenderer extends JComboBox implements TableCellRenderer {

@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
setSelectedItem(value);
return this;
}

}

关于java - 在下拉列表始终可见的 JTable 中创建 JComboBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24473418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com