Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用表格单元格中的组件,而不仅仅是字符串

使用表格单元格中的组件,而不仅仅是字符串
EN

Stack Overflow用户
提问于 2014-09-20 04:15:18
回答 1查看 94关注 0票数 1

如何能够将组件也用作单元格内容,而不仅仅是字符串、布尔值和整数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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,但我不知道如何扩展。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-20 04:20:25

JTable教程。要知道,您已经在JTable单元格中使用某种组件。当显示时,JTable将呈现一个TableCellRenderer,该对象必须返回每个单元格显示的组件。当一个单元格被编辑时,JTable将显示一个(通常)不同的对象,一个由theTableCellEditor生成的组件。然后,您的工作是根据您的需要更改表的呈现器和编辑器,其步骤太长,无法在此答案中简单显示。同样,这些教程将为您指明方向。

请注意,无论您在解决方案中采用何种路径,JTable的单元呈现器都不会显示任何实际组件,而是只显示组件的呈现,这是一个很大的区别。然而,单元格编辑器将显示一个实际的组件,但只有在单元格被编辑时才会显示。

第二,表被用作数据的表格表示形式,通常是,在每一列中都显示相同类型的数据,因此您必须提出一个强有力的论据,以说服我有时使用单个JTable列显示JButton,有时显示JComboBox。

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  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));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25948659

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文