Как отображать пользовательские имена столбцов JTable, а не из базы данных? - PullRequest
0 голосов
/ 28 августа 2018

Сначала я использую Eclipse, WindowBuilder и rs2xml.java для работы с таблицами. У меня вопрос, есть ли способ отображения имен пользовательских столбцов, например. как в настройках, а не из базы данных?

Когда я выполняю свой код, он устанавливает имена из базы данных, а не из настроек, и я не хочу этого ...

Показать таблицу:

public void MainTableShow() {

    try {

         String query="select Rb, Popisni_broj, Lokation, Kancelarija, Tip, Ispravnost from Main";

         PreparedStatement pst=connection.prepareStatement(query);
         ResultSet rs=pst.executeQuery();
         tableMain.setModel(DbUtils.resultSetToTableModel(rs));


         pst.close();
         rs.close();

    } catch (Exception e) {
        // TODO: handle exception
    }
}

и это настройки таблицы, выполненные в WindowBuilder

JScrollPane scrollPane = new JScrollPane();
    tableMain = new JTable();
    tableMain.setModel(new DefaultTableModel(
        new Object[][] {
            {null, null, null, null, null, null},
        },
        new String[] {
            "Redni Broj", "Popisni Broj", "Lokacija", "Radno Mesto", "Tip opreme", "Ispravnost opreme"
        }
    ) {
        Class[] columnTypes = new Class[] {
            Integer.class, String.class, String.class, String.class, String.class, Boolean.class
        };
        public Class getColumnClass(int columnIndex) {
            return columnTypes[columnIndex];
        }
        boolean[] columnEditables = new boolean[] {
            false, false, false, false, false, false
        };
        public boolean isCellEditable(int row, int column) {
            return columnEditables[column];
        }
    });
    scrollPane.setViewportView(tableMain);
    textFieldSearch = new JTextField();
    textFieldSearch.setColumns(10);

1 Ответ

0 голосов
/ 28 августа 2018

Здесь ваш код в основном говорит:

tableMain.setModel(...

дважды. Скорее всего, второй вызов - тот, который занимает DbUtils.resultSetToTableModel(rs)). И эта вторая модель просто трубит все, что вы положили туда при первом вызове.

Таким образом, ответ таков: вы не можете использовать этот служебный вызов таким образом. Я предполагаю , что код утилиты в DbUtils.resultSetToTableModel() создает модель, которая использует исключительно значения, поступающие из базы данных.

Если вы хотите адаптировать эту модель, тогда вы должны изучить этот служебный метод и изменить , что он делает. Например, у вас может быть другой служебный метод, который также принимает имена столбцов через код и использует их вместо значений, поступающих из БД.

Но поскольку вы не раскрываете этот метод у нас, более конкретный совет невозможен.

...