繁体   English   中英

在 Swing 中的 JTable 单元格内滚动

[英]Scrolling inside a JTable cell in Swing

我有一个表格,每个单元格都包含一个图像。 如果图像大小大于行高,我添加了JScrollPane 现在,当我运行该应用程序时,每个单元格中都可以看到滚动条,但我无法滚动它。

我该怎么做?

下面是我用来添加滚动窗格的代码。

任何示例代码将不胜感激。

     private final JTable table = new JTable(model)

    {

    @Override public Component prepareRenderer(TableCellRenderer tcr, int      row, int column) 

    {
         Component c = super.prepareRenderer(tcr, row, column);
         if(isRowSelected(row))              
         {
             c.setForeground(getSelectionForeground());
             c.setBackground(getSelectionBackground());             
         }             
       else{
             c.setForeground(getForeground());
             c.setBackground((row%2==0)?evenColor:getBackground());
         }
         JScrollPane _pane=new JScrollPane(c);
         table.setRowHeight(100);
         return _pane;
     }
};
  1. 右键单击您的jscrollpane
  2. 属性
  3. 水平滚动条策略=始终
  4. 垂直滚动条策略=始终

为了能够滚动,请右键单击Jtable Autocreatecolumnfrommodel = false(停用)

为了能够将焦点设置在单元格上(以便您可以使用内部滚动窗格),您可以通过“编辑模式”获取它:

  1. 创建自定义单元格编辑器:

     public class MyCustomCellEditor extends AbstractCellEditor implements TableCellEditor{ @Override public Component getTableCellEditorComponent(JTable table,Object value,boolean isSelected,int row,int column) { JScrollPane your_custom_panel=new JScrollPane(); return your_custom_panel; // your _pane } @Override public Object getCellEditorValue() { return null; }
  2. 把它放在你的桌子上:

     table.setDefaultEditor(MyCustomCellValueType.class,new MyCustomCellEditor());

现在你只需要管理如何进入“编辑模式”,你应该能够在单元格内滚动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM