JTable未显示在JPanel中



我试图使用DefaultTableModel创建一个具有colName中定义的列标题的JTable,然后将该表添加到JScrollPane,然后添加到JPanel。但是,当我将面板添加到JFrame时,只显示面板,而不显示表。我在另一个表中使用了类似的代码,那个表显示得很好,唯一的区别是列数和变量名。

我错过了什么?

我的代码:

    //Column Names
    final String[] colNames = {"Item", "Count"};
    DefaultTableModel dtm = new DefaultTableModel(0, colNames.length);
    //Panel to hold Table
    JPanel j = new JPanel(new BorderLayout());
    j.setBounds(9, 78, 267, 254);
    //Colored to see if the panel has been added
    j.setBackground(Color.RED);
    //Set Column Headers
    dtm.setColumnIdentifiers(colNames);
    //Jtable with model
    JTable t = new JTable(dtm);
    t.setBackground(Color.GREEN);
    t.getTableHeader().setReorderingAllowed(false);
    t.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
    t.getColumnModel().getColumn(0).setPreferredWidth(113); 
    t.doLayout();
    j.add(new JScrollPane(t), BorderLayout.CENTER);

我建议列被表模型报告的列覆盖。您可以使用。。。

String[] colNames = {"Item", "Count"};
DefaultTableModel dtm = new DefaultTableModel(colNames, 0);
JPanel j = new JPanel(new BorderLayout());
JTable t = new JTable(dtm);
t.setBackground(Color.GREEN);
t.getTableHeader().setReorderingAllowed(false);
t.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
t.getColumnModel().getColumn(0).setPreferredWidth(113); 
j.add(new JScrollPane(t), BorderLayout.CENTER);

相反。。。

如果看不到用于将表放在框架上的代码,就很难进一步评论。。。

  • 避免使用setBounds,在这种情况下无论如何都毫无意义
  • 背景颜色实际上将更多地由视图端口定义,而不是由表或面板定义,直到表被配置为填充空白空间或有足够的行来填充空白空间

相关内容

  • 没有找到相关文章

最新更新