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

时间:2015-11-24 16:36:52

标签: java swingx jxtable

很好的余月。我对JXtable的问题有一个有趣的问题。

问题是我创建的JXTable列数太多,所以我决定让用户选择使用ColumnControlButton来显示哪个列默认显示JXTable在SwingX库中。

由于列数太多,当我按下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);

}

1 个答案:

答案 0 :(得分:1)

您应该能够使用旨在与JTable一起使用的Table Column Manager。它将显示包含JCheckBoxMenuItem的所有列的菜单,以便您可以选择要显示的列。

  

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

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

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

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

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