gpt4 book ai didi

java - JTable 中的可滚动单元格

转载 作者:搜寻专家 更新时间:2023-11-01 02:30:59 25 4
gpt4 key购买 nike

我有一个 Jtable,我必须在其中显示一些大数据。我不能增加单元格的大小所以我需要在表格的每个单元格中添加一个滚动条,通过它我可以滚动单元格的文本。

我尝试添加自定义单元格渲染器

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();
}
}

关于java - JTable 中的可滚动单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9395554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com