【发布时间】:2020-03-24 13:12:33
【问题描述】:
我正在尝试将 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=]
【问题讨论】:
-
您以一种糟糕的方式将视图与模型混合在一起——JTable TableModel 不应保存 JPanel,而应保存非 GUI 逻辑数据。如果您需要显示功能按钮,那么视图组件需要在表格的渲染器和编辑器中,而不是模型中。
-
@HovercraftFullOfEels 如何在渲染器或编辑器中添加它们?我需要开设一个全新的课程还是没有?
-
有很好的教程解释了如何使用编辑器和渲染器,你真的需要学习这些,还有 Camickr 的回答,因为他是真正的 Swing 专家。
标签: java swing jtable jpanel tablelayout