我想在单击单选按钮时为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");
}
不知道如何解决它..
答案 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...
}
查找并添加/删除列。