Как правильно работать с jScrollPaneLayout?
Цитата:
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?
TableColumnModel и TableColumn не причём.