gpt4 book ai didi

java - JTable 未显示在 JPanel 中

转载 作者:行者123 更新时间:2023-12-02 06:53:04 25 4
gpt4 key购买 nike

我正在尝试使用 DefaultTableModel 创建一个 JTable,其中包含在 colName 中定义的列标题,然后将该表添加到 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,在这种情况下它毫无意义。
  • 背景颜色实际上更多地由视口(viewport)定义,然后由表格或面板定义,直到表格配置为填充空白空间或有足够的行来填充空白空间

关于java - JTable 未显示在 JPanel 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17779186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com