您好我在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);
}
并在我的构造函数中调用此方法。但我只得到背景颜色(当它变为黑色或红色或其他更改的东西时)但我没有看到列和网格等问题在哪里?
答案 0 :(得分:2)
通过将表添加到容器,您已从滚动窗格中删除它。首先删除最后一个add语句,并确保使用适当的布局管理器。
正如TrashGod所指出的,一些外观可能会选择将网格颜色设置为与表格背景颜色相同的颜色
更新了工作示例
当您向JTable
添加JScrollPane
(或任何其他组件)时,该组件受滚动窗格的控制,您不再拥有(很多)控制组件的布局。
然后,您需要专注于适当地布置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);
}
});
}
}