如何避免在java中重复JTable列



当单击单选按钮时,我想向jtable添加一个cloum。但是当我点击它两次时,两列被添加到表中。这是我的代码

 dtm = (DefaultTableModel) viewTable.getModel();
    dtm.setRowCount(0);
    TableColumnModel model=viewTable.getColumnModel();
    boolean found=false;
    for (int i = 0; i < viewTable.getColumnCount(); i++) {
        if (model.getColumn(i).getIdentifier().equals("customer Id")) {
            found=true;
            break;
        }

    if (found==false) {
       dtm.addColumn("customer Id");
    }

不知道如何修复。

此代码将对您有所帮助。对复选框的actionPerformed调用以下方法,如果它为true。基于列标头验证它。

private static void addColumn( final JTable table, final String newColumnHeader )
{
    final JTableHeader header = table.getTableHeader();
    final int columnCount = header.getColumnModel().getColumnCount();
    boolean addColumn = true;
    for( int index = 0; index < columnCount; index ++ )
    {
        final Object headerValue = header.getColumnModel().getColumn(index).getHeaderValue();
        if( newColumnHeader.equals( headerValue ) )
        {
            JOptionPane.showMessageDialog(null, "Column already exists" );
            addColumn = false;
            break;
        }
    }
    if( addColumn )
    {
        final TableColumn newCol = new TableColumn();
        newCol.setHeaderValue(newColumnHeader);
        table.getColumnModel().addColumn(newCol);
    }
}

如果已经单击了复选框,则最好禁用该复选框;)如果你不想要一个巨大的代码。

这是一个笨拙的解决方案,但它会起作用。

您可以在类中创建一个新的布尔变量,该变量表示是否设置了列。类似:

class MyClass{
    boolean isColumnAdded
    public MyClass(){
    isColumnAdded = false;
    }
    private void radioButtonActionPerformed(java.awt.event.ActionEvent evt){
        if(!isColumnAdded){
        //add column
        isColumnAdded = true;
        }
    }
}

首先,JRadioButton具有selected属性。您应该检查此状态以确定是否需要删除或添加列。。。

假设每个列名都是唯一的,您可以使用类似。。。

TableColumnModel model = viewTable.getColumnModel();
int index = -1;
try {
    index = model.getColumnIndex("customer Id");
} catch (IllegalArgumentException e) {
    // I know, sucks...
}
if (index < 0) {
    // Add new column, if JRadioButton.isSelected
} else {
    // Remove old column...
    // JRadioButton.isSelected is false...
}

查找并添加/删除列。

查看如何使用按钮、复选框和单选按钮以了解更多详细信息

相关内容

  • 没有找到相关文章

最新更新