如何在JTable单元格中使用JLists?
发布时间:2020-12-15 08:38:21 所属栏目:Java 来源:网络整理
导读:我想要一个简单的方法将JList放在JTable的列中.我已经有了JLists和表,但是当放入表中时,Jlists显示为Strings,这是正常的,因为我使用DefaultTableModel.我已经将getColumnClass()重写为: public Class? extends Object getColumnClass(int c){ return getVal
我想要一个简单的方法将JList放在JTable的列中.我已经有了JLists和表,但是当放入表中时,Jlists显示为Strings,这是正常的,因为我使用DefaultTableModel.我已经将getColumnClass()重写为:
public Class<? extends Object> getColumnClass(int c) { return getValueAt(0,c).getClass(); } 但这只是格式化整数和浮点值. 我想也应该覆盖setValueAt()和getValueAt(),以便在调用JList.getSelectedValues()时返回字符串数组,但我无法弄清楚如何. 我知道这是一个常见问题,但我在这里找不到答案.如果这是重复,请告诉我,我将删除它. 解决方法
我做到了对于每个需要同样事情的人来说,这就是我所做的:
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; } } 2)我创建了一个JScrollTableEditor,并设置我需要的列来显示JList以使用这个编辑器 table.getColumnModel().getColumn(5).setCellEditor(new JScrollTableEditor()); JScrollTableEditor类内容: public class JScrollTableEditor extends AbstractCellEditor implements TableCellEditor { JScrollPane component = new JScrollPane(); public Component getTableCellEditorComponent(JTable table,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(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |