我想把JTable放进JTable。一切都很好,我可以得到所有的跟踪信息,并成功地把它放入模型和insideTable,唯一的问题是,我不能让它渲染。
甚至尝试将insideTable前景颜色设置为红色,但仍然看不到任何更改。
table.setDefaultRenderer(List.class, new DefaultTableCellRenderer(){
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
String[] columns = {"Name","Duration","Location"};
List<Track> tracks = (ArrayList<Track>) value;
DefaultTableModel model = new DefaultTableModel(columns,0);
JTable insideTable = new JTable(model);
for(Track t: tracks){
String[] r = {t.getName(),t.getDuration(),t.getLocation()};
model.addRow(r);
}
model.fireTableDataChanged();
insideTable.setVisible(true);
return insideTable;
}
});这就是它的样子。

这一个是使用默认渲染。

编辑:解决
table.setDefaultRenderer(List.class, new DefaultTableCellRenderer(){
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
String[] columns = {"Name","Duration","Location"};
List<Track> tracks = (ArrayList<Track>) value;
DefaultTableModel model = new DefaultTableModel(columns,0);
JTable insideTable = new JTable(model);
for(Track t: tracks){
String[] r = {t.getName(),t.getDuration(),t.getLocation()};
model.addRow(r);
}
table.setRowHeight(row, 20 + (15 * insideTable.getRowCount()));
JScrollPane columnFix = new JScrollPane(insideTable);
columnFix.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
return columnFix;
}
});

发布于 2019-03-07 14:40:31
好的,我解决了它给出了行的自定义高度,然后修正了没有出现的columnNames。
table.setRowHeight(row, 20 + (15 * insideTable.getRowCount()));
JScrollPane columnFix = new JScrollPane(insideTable);
columnFix.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);https://stackoverflow.com/questions/55028119
复制相似问题