如何在java中从另一个类中删除jTable列

时间:2016-08-05 09:31:26

标签: java swing jtable tablecolumn

我正在使用cardlayout来显示面板列表。在其中一个面板中,我有一个JTable,其中包含多列和多行记录。 现在,我想删除JTable的第一列,具体取决于用户登录的位置。 以下是我的代码(在登录JFrame中):

//calling the jframe that holds the cardlayout

Home home= new Home();

//calling the panel that holds the jtable

viewRecords b =new viewRecords();

//when a user logs in

//removing the 1st column of the jtable in panel viewRecords

b.jTable1.removeColumn(b.jTable1.getColumnModel().getColumn(0));

//displaying jFrame Home

Home.setVisible(true);

问题是:使用JFrame显示表时它可以正常工作,但在使用JPanel显示同一个表时不起作用。有关如何使这项工作的任何想法?

2 个答案:

答案 0 :(得分:2)

您可以从表格视图中删除该列:

public void hideColumn(int modelColumn)
{
    int viewColumn = table.convertColumnIndexToView( modelColumn );

    if (viewColumn != -1)
    {
        TableColumnModel tcm = table.getColumnModel();
        TableColumn column = tcm.getColumn(viewColumn);
        tcm.removeColumn( column );
    }
}

对于这种逻辑的奇特实现,请查看允许用户隐藏/显示列的Table Column Manager

答案 1 :(得分:0)

此代码隐藏了jtable中的fisrt列

jTable1.getColumnModel().getColumn(0).setMinWidth(0);
jTable1.getColumnModel().getColumn(0).setPreferredWidth(0);
jTable1.getColumnModel().getColumn(0).setMaxWidth(0);