Java 如何在JTable单元格中使用JLists?
我想用一种简单的方法将JList放在JTable的列中。我已经有了JLists和表,但是当放入表中时,JLists显示为字符串,这是正常的,因为我使用DefaultTableModel。我已将getColumnClass()重写为:Java 如何在JTable单元格中使用JLists?,java,swing,jtable,jlist,Java,Swing,Jtable,Jlist,我想用一种简单的方法将JList放在JTable的列中。我已经有了JLists和表,但是当放入表中时,JLists显示为字符串,这是正常的,因为我使用DefaultTableModel。我已将getColumnClass()重写为: public Class我已经做到了。对于每一个需要同样东西的人,以下是我所做的: 1) 我已经创建了一个JScrollTableRenderer,并设置了显示JList所需的列以使用此渲染器 table.getColumnModel().getColumn
public Class我已经做到了。对于每一个需要同样东西的人,以下是我所做的:
1) 我已经创建了一个JScrollTableRenderer,并设置了显示JList所需的列以使用此渲染器
table.getColumnModel().getColumn(5).setCellRenderer(new JScrollTableRenderer());
JScrollTableRenderer类内容:
public class JScrollTableRenderer extends DefaultTableCellRenderer {
JScrollPane pane = new JScrollPane();
public JScrollTableRenderer()
{
super();
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column)
{
pane = (JScrollPane) value;
return pane;
}
}
public class JScrollTableEditor extends AbstractCellEditor implements TableCellEditor {
JScrollPane component = new JScrollPane();
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected,
int rowIndex, int vColIndex)
{
component = ((JScrollPane) value);
return ((JScrollPane) value);
}
public Object getCellEditorValue()
{
return component;
}
}
2) 我创建了一个JScrollTableEditor,并设置了显示JList所需的列以使用此编辑器
table.getColumnModel().getColumn(5).setCellEditor(new JScrollTableEditor());
JScrollTableEditor类内容:
public class JScrollTableRenderer extends DefaultTableCellRenderer {
JScrollPane pane = new JScrollPane();
public JScrollTableRenderer()
{
super();
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column)
{
pane = (JScrollPane) value;
return pane;
}
}
public class JScrollTableEditor extends AbstractCellEditor implements TableCellEditor {
JScrollPane component = new JScrollPane();
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected,
int rowIndex, int vColIndex)
{
component = ((JScrollPane) value);
return ((JScrollPane) value);
}
public Object getCellEditorValue()
{
return component;
}
}
3) 我在JTable模型中添加了此方法:
public Class<? extends Object> getColumnClass(int c)
{
if(c == 5) return JScrollPane.class;
else return getValueAt(0, c).getClass();
}
public类阅读更多关于和的信息,并阅读此感谢。我已经读过了。。我会再读一遍,试着自己写。