gpt4 book ai didi

java - Swing 删除 JTexField 和 JLabel

转载 作者:行者123 更新时间:2023-12-02 04:56:56 24 4
gpt4 key购买 nike

我有一个 JTable 2 列、列名称和复选框。如果用户单击列名称旁边的复选框,则会创建用于数据输入的新字段。我希望取消单击复选框输入字段已经消失。

我怎样才能做到这一点?

enter image description here

我添加新字段的代码:

 headerTable.getModel().addTableModelListener(new TableModelListener() {

@Override
public void tableChanged(TableModelEvent e) {
if(e.getColumn() >= 0 && e.getFirstRow()>-1){
int id = e.getFirstRow();
String colName = (String)headerTable.getValueAt(e.getFirstRow(), 1);
boolean colValue = (boolean)headerTable.getValueAt(e.getFirstRow(), 2);

System.out.println("Row : " + e.getFirstRow() +
" value :" + headerTable.getValueAt(e.getFirstRow(), 2));
appListener.getColumnId(id);
//create texfield
if(colValue==false){
System.out.println("Delete");
}
jTextField = new JTextField(20);
textField.put(id,jTextField);
if (textField != null && !textField.isEmpty()) {
textField.get(textField.size()-1);
System.out.println("Add");
}
JLabel kolor1name = new JLabel(colName+": ");
operationContent.add(kolor1name,"");
operationContent.add(jTextField, "growy, wrap");

revalidate();
repaint();
}
}
});

最佳答案

您可以创建一个包含您想要的所有字段的 vector 。当用户单击复选框时,您可以将其添加到 vector 中。例如:

Vector fields = new Vector();

当您收到通知时,您在 vector 中添加字段的名称,然后调用 refreshPanel() 方法,该方法会删除其中的所有字段,并将新字段添加到它。

// In the tableChanged(...) method
fields.addElement(colname);
refreshPanel();

然后是refreshPanel()方法:

public void refreshPanel()
{
String fNames[] = (String[]) fields.toArray();
panel.removeAll();
for(String fname : fNames)
{
//add the fields in `newPanel`, the field name is in `fname` variable
}
revalidate();
repaint();
}

当用户取消选择该复选框时,然后从 vector 中删除字段名称:

fields.removeElement(colname);
refreshPanel();

关于java - Swing 删除 JTexField 和 JLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28672286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com