gpt4 book ai didi

java - 在表格单元格中使用组件,而不仅仅是字符串

转载 作者:行者123 更新时间:2023-11-30 03:45:06 26 4
gpt4 key购买 nike

如何可能也使用组件作为单元格内容,而不仅仅是字符串、 boolean 值和整数。

String[] petStrings = { "Bird", "Cat", "Dog", "Rabbit", "Pig" };
String[] columnNames = {"name", "elem"};
Object[][] data = {
{"button", new JButton("test")},
{"select", new JComboBox(petStrings)}
};

JTable table = new JTable(data, columnNames);

现在我看不到按钮,也看不到表格中的组合框,只有javax.swing.JComboBox...

也许我应该以某种方式扩展 JTable,但我不知道如何扩展。

最佳答案

阅读JTable tutorial 。了解您已经在 J​​Table 单元格内使用某种组件。当显示时,JTable渲染一个TableCellRenderer,一个必须返回每个单元格显示的组件的对象。当编辑单元格时,JTable 将显示一个(通常)不同的对象,即由 TableCellEditor 生成的组件。然后,您的工作是根据您的需要更改表格的渲染器和/或编辑器,其步骤太长,无法在这个答案中简单地显示。同样,教程将为您指明方向。

请注意,无论您在解决方案中采用什么路线,JTable 的单元格渲染器都不会显示任何实际组件,而只会显示组件的渲染,这是一个很大的区别。然而,单元格编辑器显示实际组件,但仅当单元格处于编辑状态时。

顺便说一句,表格用作数据的表格表示,并且通常,每列中显示相同类型的数据,因此您'我必须提出强有力的论据来说服我让单个 JTable 列有时显示 JButton,有时显示 JComboBox。

例如,要让一个 JTable 列的编辑器显示组合框,您可以将其默认单元格编辑器设置为使用组合框,如下所示:

  String[] petStrings = { "Bird", "Cat", "Dog", "Rabbit", "Pig" };
JComboBox<String> petCombo = new JComboBox<>(petStrings);
String[] columnNames = {"name", "elem"};
Object[][] data = {
{"Pet 1", null},
{"Pet 2", null}
};

DefaultTableModel model = new DefaultTableModel(data, columnNames);
JTable table = new JTable(model);
table.getColumnModel().getColumn(1).setCellEditor(new DefaultCellEditor(petCombo));

关于java - 在表格单元格中使用组件,而不仅仅是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25948659/

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