Сделать прокручиваемое всплывающее окно ColumnControl 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 ответ

Решение

Вы должны иметь возможность использовать Диспетчер столбцов таблиц, который был разработан для использования с JTable, Появится меню всех столбцов с JCheckBoxMenuItem так что вы можете выбрать, какие столбцы для отображения.

но он не добавляет вертикальную полосу прокрутки во всплывающее окно, поэтому он не позволяет мне видеть все столбцы

Если у вас есть столько пунктов меню, вы можете использовать прокрутку меню. Это позволит вам контролировать количество пунктов меню, отображаемых за один раз, а затем будет добавлять кнопки вверх / вниз для прокрутки оставшихся пунктов меню.

в showPopup(...) метод из TableColumnManager класс я добавил следующую строку кода:

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

для отображения 10 пунктов меню одновременно. Если навести курсор мыши на стрелки, меню будет прокручиваться.

Другие вопросы по тегам