如何避免在java中复制JTable列?

时间:2014-09-18 06:46:02

标签: java swing jtable jtableheader

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

 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");

    }

不知道如何解决它..

3 个答案:

答案 0 :(得分:0)

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

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

class MyClass{
    boolean isColumnAdded

    public MyClass(){
    isColumnAdded = false;
    }

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

    }

}

答案 1 :(得分:0)

此代码可以帮助您。在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);
    }

}

如果已单击该复选框,则禁用该复选框;如果您不想要大量代码,则禁用该复选框。

答案 2 :(得分:0)

首先,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...
}

查找并添加/删除列。

请查看How to Use Buttons, Check Boxes, and Radio Buttons了解更多详情