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