【发布时间】:2014-10-12 13:45:38
【问题描述】:
我有一个带有单元格渲染器的JTable,我的表格不可编辑。当我选择一个单元格并复制(ctrl-c)值时,它的复制不是单元格中显示的,它正在复制存储在模型中的值。如何复制表格中显示的单元格值。
public class TableDemo {
public static void main(String[] args) {
Vector<String> values = new Vector<String>();
values.add("Val1");
values.add("Val2");
JTable table = new JTable(new Object[][] { { "key", values },
{ "key2", values } }, new String[] { "Col1", "Col2" });
table.getColumnModel().getColumn(1).setCellRenderer(new MyTableCellRenderer());
table.setCellSelectionEnabled(true);
JFrame jf = new JFrame();
jf.getContentPane().add(table);
jf.setSize(500, 500);
jf.setVisible(true);
}
}
class MyTableCellRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus,
row, column);
@SuppressWarnings("unchecked")
Vector<String> values = (Vector<String>) value;
setText(values.get(row));
return this;
}
}
【问题讨论】:
-
渲染器只是关于绘制 JTables 视图,而不是,不要永远不要在里面创建任何对象,例如Vector
值 = (Vector ) 值; -
请问什么是我如何复制表格中显示的单元格值。,DYM?复制 - 粘贴,默认 ctrl+c - ctrl+v/x(或 ctrl+insert - shift+insert),然后使用 TableCellEditor 完成
-
是的,我需要用 ctrl-c 复制。你是说不可能获得 cellrenderer 的价值?顺便说一下,我的表格应该是不可编辑的,所以不能使用 celleditor。
标签: java swing jtable tablecellrenderer