java - JTable 不显示列名 - 使用 JScrollPane

标签 java swing jtable

我尝试创建一个包含列名“User”和测试数据“data”的 JTable,但列名不会被打印。

String [] [] data = {{"hallo","hallo","","","",""},
        {"hallo","hallo","","","",""}};     
String [] User = {"ID","Benutzername", "Name", "Vorname", "Geburtsdatum", "Wirt"};

tableUsers = new JTable(data,User);
tableUsers.setPreferredScrollableViewportSize(new Dimension(500,50));
tableUsers.setFillsViewportHeight(true);
//add(new JScrollPane(tableUsers));
JTableHeader header = tableUsers.getTableHeader();
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(header, BorderLayout.NORTH);
panel.add(tableUsers, BorderLayout.CENTER);
JScrollPane scrollPane = new JScrollPane(tableUsers);
add(scrollPane);
tableUsers.setBounds(29, 245, 580, 136);
contentPane.add(tableUsers);

最佳答案

将表添加到 JPanel 面板,然后将面板添加到滚动 Pane 。所以,现在您的滚动 Pane 包含您的表格。现在,您需要将滚动 Pane 添加到内容 Pane 。您不应该将 tableUsers 添加到多个项目。

编辑:我添加了我用来运行和测试的整个代码,因为我认为您遇到了单独的问题。

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.JTableHeader;

public class Test {
    /**
     * Do this for thread safety
     * @param args
     */
    public static void main (String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createGUI();
            }
        });
    }

    /**
     * create the JFrame
     */
    private static void createGUI() {
        JFrame jf = new JFrame();

        addComponents(jf.getContentPane());

        jf.setVisible(true);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.pack();
    }

    /**
     * add the components
     * @param pane
     */
    private static void addComponents(Container pane) {
        String [] [] data = {{"hallo","hallo","","","",""}, {"hallo","hallo","","","",""}};     
        String [] User = {"ID","Benutzername", "Name", "Vorname", "Geburtsdatum", "Wirt"};

        JTable tableUsers = new JTable(data,User);
        tableUsers.setPreferredScrollableViewportSize(new Dimension(500,50));
        tableUsers.setFillsViewportHeight(true);
        //add(new JScrollPane(tableUsers));
        JTableHeader header = tableUsers.getTableHeader();
        JPanel panel = new JPanel();
        panel.setLayout(new BorderLayout());
        panel.add(header, BorderLayout.NORTH);
        panel.add(tableUsers, BorderLayout.CENTER);
        JScrollPane scrollPane = new JScrollPane(panel);
        pane.add(scrollPane);
        tableUsers.setBounds(29, 245, 580, 136);
        //pane.add(tableUsers);
    }
}

关于java - JTable 不显示列名 - 使用 JScrollPane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58995645/

相关文章:

java - @ bean : unique bean name in subclasses

java - 获取两个日期之间的所有周开始日期

java - 无法更新 Swing 中的显示

java - 如何在不使用 setPreferredSize() 的情况下调整 JScrollPane 中 JTable 的大小

java - Mybatis:将部分SQL映射到POJO内部的HashMap

java - 从 JScrollPane 获取组件

java - 按特定顺序对包含字符串的 JTable 列进行排序

java - JTable 中 JComboBox 的可用性功能

java - 序列化 JTable 的 TableModel

java - Google App Engine - 尽管我的 CPU 使用率相对较低,但是什么导致冷启动延迟时间较长?