我没有获得列的名称



我正在JPanel中放置一个JTable,但是当我显示时,我看到的是表内容,但没有看到列名。

public class Neww extends JPanel
{
    Connection conn = null;
    Statement st;
    DefaultTableModel model = new DefaultTableModel(new Object[][] {
        { " ", " " },
        { " ", " " },
        { " ", " " },
        { " ", " " },
        { " ", " " },
        { " ", " " }
    }, new Object[] {
        "ItemName",
        "No of items"
    });
    JTable table = new JTable(model);
    TableColumn ItemName = table.getColumnModel().getColumn(0);
    JComboBox comboBox = new JComboBox();
    Neww()
    {
        this.setLayout(new FlowLayout(FlowLayout.CENTER));
        this.add(table);
        comboBox.addItem("Spoon");
        comboBox.addItem("Plate");
        comboBox.addItem("Mixer");
        comboBox.addItem("Glass");
        ItemName.setCellEditor(new DefaultCellEditor(comboBox));
    }
}
有两种

方法

  • (正确的方式)必须把JTable放到JScrollPane,然后JTableHeader是可见

  • JTable获取JTableHeader(将JPanelLayoutManager更改为BorderLayout),并在JPanelNORTH area

1)将JTable包装在JScrollPane内。喜欢这个:

JTable table=...;
JPanel container = new JPanel();
JScrollPane jsp=new JScrollPane(table);
container.add(jsp);

2)使用getTableHeader()并将其添加到需要的地方(通常是北面):

...
JTableHeader header = table.getTableHeader();
JPanel container = new JPanel(new BorderLayout());
// Add header at NORTH position
container.add(header, BorderLayout.NORTH);
//Add table below header
container.add(table, BorderLayout.CENTER);

以下语句在您的代码中产生了问题。

 this.add(table);

添加表时使用滚动窗格。

 add(new JScrollPane(table));

我们为什么要使用JScrollPane

正如@OscarRyz在此评论中所述。

它放入 JScrollPane top 组件(或顶部)的表头 视图或类似的东西被命名为 ) 当没有顶部组件时 JTable 显示为无头。这是设计使然。

编辑:另请查看此答案以获取更多详细信息。

相关内容

  • 没有找到相关文章

最新更新