我正在使用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
显示同一个表时不起作用。有关如何使这项工作的任何想法?
答案 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);