我正在尝试在我的类MyPage中添加一个jTable,其中有一个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 );
}
}
}
我已经尝试了在Internet上找到的所有可能的方法来解决它,但是表没有显示任何列标题,但是当我在Windows构建器设计窗口中的jTable属性中打开模型窗口时,会显示colomn标题。
答案 0 :(得分:0)
我已尝试过在互联网上找到的所有可能的方法来解决它
期待告诉您的所有答案,不要使用null
布局!
scrollPane.setLayout(null);
是您问题的关键。 JScrollPane
拥有自己的布局管理器,管理员(其中包括列标题视图)
我会强烈建议您花点时间阅读Laying Out Components Within a Container,它会为您节省大量时间,并有助于防止其他许多"异常"问题
下一步...
panel_4.add(scrollPane.add(table));
不是您向JScrollPane
添加组件的方式。如果您仔细查看How to Use Scroll Panes和How to Use Tables,则会显示应如何使用JScrollPane
。
JScrollPane
是一个不寻常的容器,因为你实际上并没有添加"任何东西,相反,你"包装"其中的组成部分。
我更喜欢使用构造函数来传递"视图"到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%的问题应该消失