创建表但看不到网格或仅值背景颜色

时间:2013-10-31 20:37:57

标签: java swing jtable

您好我在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);

}

并在我的构造函数中调用此方法。但我只得到背景颜色(当它变为黑色或红色或其他更改的东西时)但我没有看到列和网格等问题在哪里?

1 个答案:

答案 0 :(得分:2)

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

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

更新了工作示例

当您向JTable添加JScrollPane(或任何其他组件)时,该组件受滚动窗格的控制,您不再拥有(很多)控制组件的布局。

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

enter image description here

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);
            }
        });
    }
}