Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как правильно работать с jScrollPaneLayout?

1.8K
28 января 2011 года
erslgoeirjh
26 / / 16.12.2005
Есть код:

Цитата:

public Object[][] data = { { "" }, { "" }, { "" }, { "" }, { "" }, { "" },
{ "" }, { "" }, { "" }, { "" }, { "" }, { "" }, { "" }, { "" },
{ "" }, { "" } };

public Object[] columnnames = { "DT_PREKR_L", "T_PREKR_L", "SH_PREKR_L", "DLG_PREKR_L", "DT_PREKR", "T_PREKR", "SH_PREKR", "DLG_PREKR", "DT_PREKR_R",
"T_PREKR_R", "SH_PREKR_R", "DLG_PREKR_R", "DT", "T", "WR", "DWRD" };

public DefaultTableModel myTM = new DefaultTableModel(data, columnnames);

private JPanel getJPanel1() {
if (jPanel1 == null) {
jPanel1 = new JPanel();
jPanel1.setLayout(null);
jPanel1.setBounds(2, 2, 896, 336);
jPanel1.setBorder(BorderFactory
.createEtchedBorder(EtchedBorder.LOWERED));
jPanel1.setVisible(false);
jPanel1.add(getJTextField1(), null);
jPanel1.add(getJTextField2(), null);
jPanel1.add(getJTextField3(), null);
jPanel1.add(getJTextField4(), null);
jPanel1.add(getJTextField5(), null);
jPanel1.add(getJTextField6(), null);
jPanel1.add(getJLabel2(), null);
jPanel1.add(getJLabel3(), null);
jPanel1.add(getJLabel4(), null);
jPanel1.add(getJLabel5(), null);
jPanel1.add(getJLabel6(), null);
jPanel1.add(getJLabel7(), null);
jPanel1.add(getJScrollPane(), null);
}
return jPanel1;
}

private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane();
jScrollPane.setBounds(new Rectangle(16, 211, 861, 126));
jScrollPane.setViewportView(getJTable());
jScrollPane
.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
jScrollPane
.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
}
return jScrollPane;
}

private JTable getJTable() {
if (jTable == null) {
TableColumnModel jthcm;
TableColumn jthc0, jthc1, jthc2, jthc3, jthc4, jthc5, jthc6, jthc7, jthc8, jthc9, jthc10, jthc11, jthc12, jthc13, jthc14, jthc15;

jTable = new JTable(myTM);
jTable.setBounds(0, 0, 1120, 16);
jTable.setSize(1120, 16);
jTable.setPreferredSize(new Dimension(1120, 16));
jTableHeader = jTable.getTableHeader();
jTableHeader.setBounds(0, 0, 1120, 16);
jTableHeader.setSize(1120, 16);
jTableHeader.setPreferredSize(new Dimension(1120, 16));
jthcm = jTableHeader.getColumnModel();
jthc0 = jthcm.getColumn(0);
//jthc0.setHeaderValue("DT_PREKR_L");
jthc1 = jthcm.getColumn(1);
//jthc1.setHeaderValue("T_PREKR_L");
jthc2 = jthcm.getColumn(2);
//jthc2.setHeaderValue("SH_PREKR_L");
jthc3 = jthcm.getColumn(3);
//jthc3.setHeaderValue("DLG_PREKR_L");
jthc4 = jthcm.getColumn(4);
//jthc4.setHeaderValue("DT_PREKR");
jthc5 = jthcm.getColumn(5);
//jthc5.setHeaderValue("T_PREKR");
jthc6 = jthcm.getColumn(6);
//jthc6.setHeaderValue("SH_PREKR");
jthc7 = jthcm.getColumn(7);
//jthc7.setHeaderValue("DLG_PREKR");
jthc8 = jthcm.getColumn(8);
//jthc8.setHeaderValue("DT_PREKR_R");
jthc9 = jthcm.getColumn(9);
//jthc9.setHeaderValue("T_PREKR_R");
jthc10 = jthcm.getColumn(10);
//jthc10.setHeaderValue("SH_PREKR_R");
jthc11 = jthcm.getColumn(11);
//jthc11.setHeaderValue("DLG_PREKR_R");
jthc12 = jthcm.getColumn(12);
//jthc12.setHeaderValue("DT");
jthc13 = jthcm.getColumn(13);
//jthc13.setHeaderValue("T");
jthc14 = jthcm.getColumn(14);
//jthc14.setHeaderValue("WR");
jthc15 = jthcm.getColumn(15);
//jthc15.setHeaderValue("DWRD");
jTableHeader.setVisible(true);
jTable.setTableHeader(jTableHeader);
}
return jTable;
}



Как видно из этого кода, на панель jPanel1 посажен jScrollPane, а внутри jScrollPane помещена jTable. У jTable есть заголовок jTableHeader. Причём ширина jTable--больше, чем ширина jScrollPane.

Скроллирование по вертикали нормально работает. Но что касается скроллирования по горизонтали, то его нет--все 16 столбцов таблицы отображаются внутри скроллпейна сразу. Я же хочу, чтобы внутри скроллпейна отображалось только 12 столбцов, а для просмотра остальных 4 столбцов нужно было производить скроллирование по горизонтали.

Как это сделать? Может быть, использовать TableColumnModel и TableColumn и задать для столбцов (тип TableColumn) значение PreferredSize равное, например, 70 ?
Или же мне как-то следует поработать с jScrollPaneLayout?

502
02 февраля 2011 года
Jail
550 / / 30.01.2007
TableColumnModel и TableColumn не причём.

 
Код:
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);


или же можно попробовать =>
WrapLayout
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог