将JPanel行添加到JTable模型中

问题描述 投票:0回答:1

我正在尝试将一个jpanel作为一行添加到我的jtable中,如下所示:table,直到单击右上角的编辑按钮为止,红色按钮应该是不可见的。

我尝试过这样的事情:

JPanel row = new JPanel();
            row.setBackground(new Color(255, 255, 255, 0));
            row.setAutoscrolls(true);
            row.setBorder(new EmptyBorder(0, 0, 0, 0));
            row.setLayout(new TableLayout(new double[][]{
                    {TableLayout.FILL, TableLayout.FILL},
                    {TableLayout.PREFERRED}}));
            ((TableLayout)row.getLayout()).setHGap(0);
            ((TableLayout)row.getLayout()).setVGap(0);

            JLabel deleteRow = new JLabel();
            deleteRow.setText("");
            deleteRow.setIcon(new ImageIcon(getClass().getResource("/com/example/clinicsystem/pictures/remove.png")));
            JLabel rowText = new JLabel();
            rowText.setText(comboBoxPermissions.getSelectedItem().toString());
            rowText.setForeground(Color.black);
            rowText.setFont(new Font("Helvetica-Normal", Font.PLAIN, 14));
            rowText.setHorizontalAlignment(SwingConstants.CENTER);

            row.add(deleteRow, new TableLayoutConstraints(0, 0, 0, 0, TableLayoutConstraints.FULL, TableLayoutConstraints.FULL));
            row.add(rowText, new TableLayoutConstraints(0, 0, 0, 0, TableLayoutConstraints.FULL, TableLayoutConstraints.FULL));

            model.addRow(new JPanel[]{row});

但是当我运行项目时,我在此面板应该位于的行中得到了此文本:

javax.swing.JPanel[,0,0,0x0,invalid,layout=info.clearthought.layout.TableLayout,alignmentX=0.0,alignmentY=0.0,border=javax.swing.border.EmptyBorder@254d8187,flags=33554441,maximumSize=,minimumSize=,preferredSize=]
java swing jtable jpanel tablelayout
1个回答
0
投票

我将在此面板应该位于的行中获取此文本:

默认情况下,表的呈现将只对toString()中的数据调用TableModel方法,因此您将看到JPanel的toString()值。

A JTable并非旨在向TableModel添加组件。它旨在为您添加数据到TableModel。然后根据添加到模型中的数据类型来呈现数据。

在单击右上角的编辑按钮之前,红色按钮应该是不可见的。

因此您需要添加一列数据来表示红色按钮。首先读取Table Button Column。它演示了如何向表中添加一列按钮,以及如何添加单击按钮时要调用的Action。

如果您不希望该列可见,则可以在创建表格后从TableColumn中删除TableColumnModel。然后,当单击“编辑”按钮时,可以将TableColumn添加回TableColumnModel

TableColumnModel具有类似removeTableColumn(...)addTableColumn(..)的方法来提供帮助。您还可以使用JTable的getColumn(...)方法来删除该列并保存以备将来使用。

阅读How to Use Table上Swing教程中的部分,以获得有关渲染器和编辑器的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.