制作一个可滚动的ColumnControl弹出窗口JXTable



好的满月。我对JXtable的性质有一个有趣的问题。

问题是我创建的JXTable列太多,所以我决定让用户使用默认情况下与SwingX库中的JXTable一起提供的ColumnControlButton来选择显示哪一列。

由于我的列太多,当我按下ColumnControl按钮时,它不会显示所有可以隐藏/显示的列。默认的ColumnControl没有提供可滚动的属性来管理这种情况。我需要一些类似于JXTable使用的代码。。我不知道,可能是.setHorizontalScrollEnabled(true)之类的,所以我可以看到ColumnControl中的所有列。

我很感激你们提前回答。。。

顺便说一下,这是加载表的代码:

public static void load_resg() throws Exception{
     String[] titles = new String[80];     
     for(int i=0; i<80; i++){
         titles[i]=NbP[i];
     }
      modelResg=new DefaultTableModel(null, titles){
          @Override
             public boolean isCellEditable(int i, int i1) {
               return false; //To change body of generated methods, choose Tools | Templates.
             }
        };
      BufferedReader bw = new BufferedReader(new FileReader("Out\Depth.txt"));
      String line; 
      while((line=bw.readLine())!=null){
          modelResg.addRow(line.split(";"));
      }
    bw.close();
    resg.setIntercellSpacing(new Dimension(5, 5));
    resg.setHighlighters(HighlighterFactory.createSimpleStriping());
    resg.setHorizontalScrollEnabled(true);
    resg.packSelected();
    resg.setSortable(true);
    resg.getColumnControl();
    resg.setColumnControlVisible(true);
    resg.setModel(modelResg);
}

您应该能够使用设计用于JTable的表列管理器。它将显示带有JCheckBoxMenuItem的所有列的菜单,以便您可以选择要显示的列。

但它没有在弹出窗口中添加垂直滚动条,所以它不让我看到的所有列

当你有那么多菜单项时,你可能想使用菜单滚动条。这将允许您控制一次显示的菜单项数量,然后添加向上/向下按钮滚动其余菜单项。

TableColumnManager类的showPopup(...)方法中,我添加了以下代码行:

MenuScroller.setScrollerFor(popup, 10);
popup.show(header, r.x, r.height);

一次显示10个菜单项。将鼠标悬停在箭头上会导致菜单滚动。

最新更新