Java JTable中的可滚动单元格
我有一个Jtable,其中我必须显示一些大数据。我不能增加单元格的大小,所以我需要在表格的每个单元格中添加一个滚动条,通过它我可以滚动单元格的文本 我已尝试添加自定义单元格渲染器Java JTable中的可滚动单元格,java,swing,jtable,Java,Swing,Jtable,我有一个Jtable,其中我必须显示一些大数据。我不能增加单元格的大小,所以我需要在表格的每个单元格中添加一个滚动条,通过它我可以滚动单元格的文本 我已尝试添加自定义单元格渲染器 private class ExtendedTableCellEditor extends AbstractCellEditor implements TableCellEditor { JLabel area = new JLabel(); String text; public Compo
private class ExtendedTableCellEditor extends AbstractCellEditor implements TableCellEditor
{
JLabel area = new JLabel();
String text;
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int rowIndex, int vColIndex)
{
area.setText(text);
return new JScrollPane(area);
}
public Object getCellEditorValue()
{
return text;
}
}
现在我可以看到单元格上的滚动条,但无法单击并滚动单元格
对这个问题的任何建议都会很好。
提前感谢。添加一个
JScrollPane
并将JLabel
放在JScrollPane
中解决了问题。所以我想和大家分享一下
private class ExtendedTableCellEditor extends AbstractCellEditor implements TableCellEditor
{
JLabel _component = new JLabel();
JScrollPane _pane = new JScrollPane(_component, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
/**
* Returns the cell editor component.
*
*/
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int rowIndex, int vColIndex)
{
if (value == null) return null;
_component.setText(value != null ? value.toString() : "");
_component.setToolTipText(value != null ? value.toString() : "");
_component.setOpaque(true);
_component.setBackground((isSelected) ? Color.BLUE_DARK : Color.WHITE);
_component.setForeground((isSelected) ? Color.WHITE : Color.BLACK);
_pane.setHorizontalScrollBar(_pane.createHorizontalScrollBar());
_pane.setVerticalScrollBar(_pane.createVerticalScrollBar());
_pane.setBorder(new EmptyBorder(0,0,0,0));
_pane.setToolTipText(value != null ? value.toString() : "");
return _pane;
}
public Object getCellEditorValue()
{
return _component.getText();
}
}
您需要一个自定义渲染器和一个自定义编辑器,后者在单元格处于“活动”状态时处于活动状态。这是一个很好的例子。它真的很好。坦斯克垃圾神