0

您好,我正在用 Java 制作 JTable,但遇到了奇怪的问题。我只能看到背景颜色。

这是负责创建的方法。

public void createCustomerList() {

    table = new JTable();
    tableModel = new DefaultTableModel();

    tableModel.addColumn("Naam");
    tableModel.addColumn("Achternaam");
    tableModel.addColumn("Klant-ID");

    table.setSize(954, 686);
    table.setLocation(100, 78);
    table.setBackground(Color.white);
    table.setForeground(Color.black);
    table.setGridColor(Color.black);
    table.setRowHeight(30);
    table.setFont(new Font("Tahoma", Font.PLAIN, 36));

    JScrollPane scrollPane = new JScrollPane(table);
    table.setModel(tableModel);
    this.add(scrollPane);
    this.add(table);

}

在我的构造函数中,我调用了这个方法。但我只得到背景颜色(将其更改为黑色或红色或其他颜色时)但我没有看到列和网格等。问题可能出在哪里?

4

1 回答 1

2

通过将表格添加到容器中,您已将其从滚动窗格中移除。首先删除最后一个 add 语句,并确保您使用的是适当的布局管理器。

正如 TrashGod 所指出的,某些外观可能会选择将网格颜色设置为与表格背景颜色相同的颜色

更新了工作示例

当您将 a JTable(或任何其他组件)添加到 aJScrollPane时,该组件将受滚动窗格的控制,您不再(大量)控制组件的布局。

然后,您需要专注于布置JScrollPane适当的...

在此处输入图像描述

import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.DefaultTableModel;

public class QuickTable {

    public static void main(String[] args) {
        new QuickTable();
    }

    public QuickTable() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JTable table = new JTable();
                DefaultTableModel tableModel = new DefaultTableModel();

                tableModel.addColumn("Naam");
                tableModel.addColumn("Achternaam");
                tableModel.addColumn("Klant-ID");

                for (int index = 0; index < 10; index++) {

                    String value = Integer.toString(index);
                    tableModel.addRow(new Object[]{value, value, value});

                }

                table.setModel(tableModel);

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new JScrollPane(table));
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }
}
于 2013-10-31T20:42:13.173 回答