Программисты JAVA общаются здесь
Anonymous
Заголовки Java JTable не перемещаются горизонтально при прокрутке
Сообщение
Anonymous » 26 июн 2024, 02:50
Я использую Java 8 и компилирую приложение как работоспособный jar-файл со всеми зависимостями.
Я создаю таблицу, добавляю заголовки и содержимое. Оба видны при визуализации JScrollPane, однако при прокрутке заголовки не перемещаются горизонтально вдоль ячеек данных, а только строки данных таблицы.
Ниже моего кода:
Код: Выделить всё
public JScrollPane getTableScrollPaneWithTable(CellData[][] toBeShown, String[] headers, int panelWidth,
int parentHeight) {
DefaultTableModel tableModel = new DefaultTableModel(toBeShown, headers);
this.parent.getInfoResponse().getPositionSetOfConfigDIDsInTheDataMatrix().clear();
JTable table = new JTable(tableModel) {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public TableCellRenderer getCellRenderer(int row, int column) {
if (column == 0 || row == 0 || row == 1) {
HeaderColumnRenderer hcr = new HeaderColumnRenderer(this.getTableHeader().getDefaultRenderer());
return hcr;
}
CellData[][] dataShowed = getDataShowed();
return new MultiColorRenderer(dataShowed);
}
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table.setCellSelectionEnabled(true);
table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
int colCount = table.getColumnModel().getColumnCount();
for(int i=0; i< colCount; i++) {
if(i==0) {
table.getColumnModel().getColumn(i).setPreferredWidth(80);
continue;
}
table.getColumnModel().getColumn(i).setPreferredWidth(250);
}
table.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyReleased(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_C) {
//System.out.println("Copy event");
int[] selectedColumns = table.getSelectedColumns();
int[] selectedRows = table.getSelectedRows();
MainWindow parent = getParent();
CellData[][] toShow = parent.getCellDataShowed();
StringBuffer sb = new StringBuffer();
for(int i =0; i
Подробнее здесь: [url]https://stackoverflow.com/questions/78669781/java-jtable-headers-not-moving-horizontally-when-when-doing-scroll[/url]
1719359425
Anonymous
Я использую Java 8 и компилирую приложение как работоспособный jar-файл со всеми зависимостями. Я создаю таблицу, добавляю заголовки и содержимое. Оба видны при визуализации JScrollPane, однако при прокрутке заголовки не перемещаются горизонтально вдоль ячеек данных, а только строки данных таблицы. Ниже моего кода: [code]public JScrollPane getTableScrollPaneWithTable(CellData[][] toBeShown, String[] headers, int panelWidth, int parentHeight) { DefaultTableModel tableModel = new DefaultTableModel(toBeShown, headers); this.parent.getInfoResponse().getPositionSetOfConfigDIDsInTheDataMatrix().clear(); JTable table = new JTable(tableModel) { /** * */ private static final long serialVersionUID = 1L; @Override public TableCellRenderer getCellRenderer(int row, int column) { if (column == 0 || row == 0 || row == 1) { HeaderColumnRenderer hcr = new HeaderColumnRenderer(this.getTableHeader().getDefaultRenderer()); return hcr; } CellData[][] dataShowed = getDataShowed(); return new MultiColorRenderer(dataShowed); } @Override public boolean isCellEditable(int row, int column) { return false; } }; table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); table.setCellSelectionEnabled(true); table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); int colCount = table.getColumnModel().getColumnCount(); for(int i=0; i< colCount; i++) { if(i==0) { table.getColumnModel().getColumn(i).setPreferredWidth(80); continue; } table.getColumnModel().getColumn(i).setPreferredWidth(250); } table.addKeyListener(new KeyListener() { @Override public void keyTyped(KeyEvent e) { // TODO Auto-generated method stub } @Override public void keyPressed(KeyEvent e) { // TODO Auto-generated method stub } @Override public void keyReleased(KeyEvent e) { if(e.getKeyCode()==KeyEvent.VK_C) { //System.out.println("Copy event"); int[] selectedColumns = table.getSelectedColumns(); int[] selectedRows = table.getSelectedRows(); MainWindow parent = getParent(); CellData[][] toShow = parent.getCellDataShowed(); StringBuffer sb = new StringBuffer(); for(int i =0; i Подробнее здесь: [url]https://stackoverflow.com/questions/78669781/java-jtable-headers-not-moving-horizontally-when-when-doing-scroll[/url]