我仍然无法弄清楚JTables中“表中的特殊对象”的想法。我让comboBox显示在另一个表的特定单元格中,但这次我需要一个JTextArea才能显示在一个特定的单元格中。显然,我用于组合框的方法仅限于文本字段,组合框和另一个组件;我不记得哪个。无论如何,我正在宣布如下表格:
DefaultTableModel projDTM = new DefaultTableModel();
String[] colNames = {"Attribute","Data"};
projDTM.setColumnIdentifiers(colNames);
curProj = new JTable(projDTM) {
public boolean isCellEditable(int row, int column) {
if(column == 0) return false;
if(row == 0) return false;
return true;
}
};
curProj.setFillsViewportHeight(true);
curProj.setCellSelectionEnabled(true);
curProj.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
curProj.getColumnModel().getColumn(0).setMaxWidth(100);
curProj.getColumnModel().getColumn(1).setMaxWidth(400);
JScrollPane tablePane = new JScrollPane(curProj);
tablePane.setPreferredSize(new Dimension(500,200));
稍后使用projDTM.add();
和/或projDTM.setValueAt();
(如果已包含旧数据)从表的内容(例如文件或数据库)中检索表内容。恢复的项目之一是用逗号(基本上是项目数组)分隔的一串项目,我宁愿在其选择单元格中显示为列表,而不是现在的长逗号分隔字符串(为了便于阅读)。设置它的最简单方法是什么?我看到了一些关于这个暗示JTextArea的帖子,但是我不太确定如何在表格中实现它当前设置的方式。我只需要修改其中一个表格的单元格,而其余单元格应保持不变。此外,此列表中的数据是只读格式,因此它们根本不需要编辑进入的单元格,它将始终位于表格中的相同位置。
有什么建议吗?
我仍然对Java很陌生,所以对我很轻松。
编辑:仍然没有运气让特定的单元格使用JTextArea(或JTextField,JComboBox或JButton以外的任何东西)。我看的每个地方都只显示如何将整个列更改为不同的组件类型(例如table.getColumnModel().getColumn(1).setCellEditor()
)。它也不一定必须是JTextArea,只是某种形式的自上而下列表将显示在单个单元格中。