gpt4 book ai didi

java - 将 JPanel 行添加到 JTable 模型

转载 作者:行者123 更新时间:2023-12-02 09:14:38 26 4
gpt4 key购买 nike

我正在尝试将 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=]

最佳答案

I get this text inside the row where this panel is supposed to be:

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

JTable 的设计目的不是向 TableModel 添加组件。它是为您向 TableModel 添加数据而设计的。然后根据添加到模型的数据类型呈现数据。

the red buttons are supposed to be invisible till the edit button on the top right is clicked.

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

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

TableColumnModel 具有 removeTableColumn(...)addTableColumn(..) 等方法来帮助解决此问题。您还可以使用 JTable 的 getColumn(...) 方法来获取要删除并保存的列以供将来使用。

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

关于java - 将 JPanel 行添加到 JTable 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59096303/

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