关于在Swing中实现简单删除按钮的java建议
所以我的问题是为我的GUI实现一个功能正常的删除按钮。 虽然我几乎所有的东西都在工作,但我一直在努力实现这个功能。它所做的是,当我单击“添加”按钮时,它会创建一行,其中包含文本字段和复选框。“Delete”的工作原理是,我单击复选框将其删除后,它只删除最近创建的字段。我的意图是GUI以一种动态的方式工作,在这里我可以单击任何复选框并仅删除那些选中复选框的特定行。 我已经研究过使用ItemListener的方法,但我仍然在努力,因为我认为这是最熟练的方法。我还将组件存储在一个数组中进行迭代。我觉得我与我现在所拥有的一切很接近,任何建议都值得赞赏
下面是在我的GUI中创建新行的“添加”按钮代码。然后是“删除”按钮代码,它将组件放置在一个数组中,但只删除已检查的最近创建的行
add = new JButton("Add");
add.addActionListener(e ->{
rowPanel = new JPanel(new GridLayout(1,4,5,5));
for(int i = 0; i < 4; i++ ){
rowPanel.add(new JTextField(8));
}
for(int l=0; l < 1; l++){
rowPanel.add(new JCheckBox(), BorderLayout.EAST);
}
infoPanel.add(rowPanel);
infoPanel.revalidate();
infoPanel.repaint();
});
delete = new JButton("Delete");
delete.addActionListener(e -> {
Component[] components = rowPanel.getComponents();
for(Component c : components){
if(c instanceof JCheckBox){
if(((JCheckBox)c).isSelected()){
infoPanel.remove(rowPanel);
}
}
}
infoPanel.revalidate();
infoPanel.repaint();
});
# 1 楼答案
您可以将JTable用作容器,并添加一个自定义行,该行是一个复选框和一个文本字段。这样,您只需获取复选框的事件,查看它位于JTable中的哪个索引,然后将其删除
这可能很有用: https://docs.oracle.com/javase/tutorial/uiswing/components/table.html#editrender