Мой jTable не показывает заголовки столбцов - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь добавить jTable в свой класс MyPage, в котором есть tabbedPane. Я могу вызвать в нем свой jTable, и таблица отлично видна, а заголовки столбцов - нет. Я даже пытался добавить свою таблицу в scrollPane, но это также не помогает мне. Кроме того, я использую Eclipse, я не думаю, что это нужно говорить, а просто дать вам знать. Вот мой класс MyPage и код таблицы в нем

Public MyPage(){
    JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
    tabbedPane.setBorder(new LineBorder(new Color(0, 0, 0), 2));
    tabbedPane.setBounds(10, 122, 744, 386);
    contentPane.add(tabbedPane);

    JPanel panel_4 = new JPanel();
    tabbedPane.addTab("Customers list", null, panel_4, null);
    panel_4.setLayout(null);

    JScrollPane scrollPane = new JScrollPane();
    scrollPane.setBounds(0, 0, 735, 354);
    scrollPane.setLayout(null);

    table = new JTable();
    table.setGridColor(new Color(0, 0, 0));
    table.setBounds(10, 10, 715, 332);

    panel_4.add(scrollPane.add(table));

    conn = javaconnect.ConncrDB();
    Table(); 
    }

А вот и функция, с помощью которой я вызываю записи таблицы в моей базе данных.

public void Table() {
    try {

        String sql = "select * From Balances";
        pst = conn.prepareStatement(sql);
        rs = pst.executeQuery();
        table.setModel(DbUtils.resultSetToTableModel(rs));

    } catch (Exception e) {
        JDialog dialog = new JDialog();
        dialog.setAlwaysOnTop(true);    
        JOptionPane.showMessageDialog(dialog, e );
    }finally {
        try {
            rs.close();
            pst.close();
        } catch (Exception e2) {
            JDialog dialog = new JDialog();
            dialog.setAlwaysOnTop(true);    
            JOptionPane.showMessageDialog(dialog, e2 );
        }
    }
} 

Я испробовал все возможные способы, которые я мог найти в Интернете, чтобы разрешить его, но в таблице не отображаются заголовки столбцов, но когда я открываю окно модели в свойствах моего jTable в окне дизайна Windows Builder, отображаются заголовки столбцов.

1 Ответ

0 голосов
/ 15 мая 2018

Я попробовал все возможные способы, которые я мог найти в Интернете, чтобы решить эту проблему

Ожидайте всех ответов, которые вам говорят, не используйте null макеты!

scrollPane.setLayout(null);

является ключом к вашей проблеме. У JScrollPane есть собственный менеджер раскладки, который, помимо прочего, управляет представлением заголовка столбца

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

Далее ...

panel_4.add(scrollPane.add(table));

- это не то, как вы добавляете компонент к JScrollPane. Если вы присмотритесь к Как использовать панели прокрутки и Как использовать таблицы , они покажут, как следует использовать JScrollPane.

JScrollPane - необычный контейнер, в котором вы на самом деле ничего не «добавляете», вместо этого вы «оборачиваете» компонент в нем.

JScrollPane

Я предпочитаю использовать конструктор для передачи "view" в JScrollPane, но вы также можете использовать ...

scrollPane.setViewportView(table);
panel_4.add(scrollPane);

Итак, с чем-то вроде ...

Public MyPage(){
    JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
    tabbedPane.setBorder(new LineBorder(new Color(0, 0, 0), 2));
    contentPane.setLayout(new BorderLayout());
    contentPane.add(tabbedPane);

    // Seems pointless, but hay
    JPanel panel_4 = new JPanel(new BorderLayout());
    tabbedPane.addTab("Customers list", panel_4);

    table = new JTable();
    table.setGridColor(new Color(0, 0, 0));
    JScrollPane scrollPane = new JScrollPane(table);

    panel_4.add(scrollPane);

    conn = javaconnect.ConncrDB();
    Table(); 
}

99,9% ваших проблем должны уйти

...