使用java swing删除所选复选框
我不熟悉java swing。我有一个生成复选框的代码。我想在我的框架中的某个地方有一个按钮,单击该按钮应删除选中的复选框条目。这是我到目前为止所拥有的使用java swing删除所选复选框,java,swing,jcheckbox,Java,Swing,Jcheckbox,我不熟悉java swing。我有一个生成复选框的代码。我想在我的框架中的某个地方有一个按钮,单击该按钮应删除选中的复选框条目。这是我到目前为止所拥有的 public class Scroll extends JPanel { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable(){ public void run() {
public class Scroll extends JPanel {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run() {
createAndShowGUI();
}
});
}
public static void createAndShowGUI() {
JFrame frame = new JFrame("JFrame with ScrollBar");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JComponent newContentPane = new ResultButtonBar();
newContentPane.setOpaque(true);
JScrollPane scrollPane = new JScrollPane(newContentPane);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
frame.getContentPane().add(scrollPane);
frame.setSize(800, 800);
frame.setVisible(true);
JButton startButton = new JButton("Start");
frame.add(startButton, BorderLayout.SOUTH);
startButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
JOptionPane.showMessageDialog(null, "basdsadad");
}
});
}
}
以及新的ResultButtonBar().java
public类ResultButtonBar扩展了JPanel{
private HashMap map=new HashMap();
私人标签;
专用静态最终整数最大检查=1000;
公共结果按钮栏(){
超级();
JButton btn=新JButton();
btn.setVisible(真);
JCheckBox复选框;
随机r=新随机();
JPanel checkPanel=newjpanel(newgridlayout(0,1));
_标签=新的JLabel(“您没有选择任何内容”);
检查面板。添加(_标签);
对于(int i=0;i
首先,将所有复选框保留在数组列表中,以便在需要时可以引用它们
然后,在需要的地方添加一个JButton
。然后迭代此ArrayList
并对包含复选框的组件调用invalidate()
。下一个语句是调用容器上的remove()
方法;检查面板
或者,如果容器中的所有组件都是复选框,并且您希望删除它们,则可以调用removeAll()
StanislavL提出的替代方案也是一个很好的选择,如果您有许多不同的组件以及复选框首先,将所有复选框保留在数组列表中
以便在需要时可以引用它们
然后,在需要的地方添加一个JButton
。然后迭代此ArrayList
并对包含复选框的组件调用invalidate()
。下一个语句是调用容器上的remove()
方法;检查面板
或者,如果容器中的所有组件都是复选框,并且您希望删除它们,则可以调用removeAll()
StanislavL提出的替代方案也是一个很好的选择,如果您有许多不同的组件以及复选框首先,将所有复选框保留在数组列表中
以便在需要时可以引用它们
然后,在需要的地方添加一个JButton
。然后迭代此ArrayList
并对包含复选框的组件调用invalidate()
。下一个语句是调用容器上的remove()
方法;检查面板
或者,如果容器中的所有组件都是复选框,并且您希望删除它们,则可以调用removeAll()
StanislavL提出的替代方案也是一个很好的选择,如果您有许多不同的组件以及复选框首先,将所有复选框保留在数组列表中
以便在需要时可以引用它们
然后,在需要的地方添加一个JButton
。然后迭代此ArrayList
并对包含复选框的组件调用invalidate()
。下一个语句是调用容器上的remove()
方法;检查面板
或者,如果容器中的所有组件都是复选框,并且您希望删除它们,则可以调用removeAll()
StanislavL提出的备选方案也是一个很好的选择,如果您有许多不同的组件以及复选框我可以想到两种方法:
- 如果您正在维护一个只包含
JCheckBox
实例的JPanel
实例,那么您可以首先使用panel.getComponents()
方法获取所有复选框,检查它们的选择状态,并根据状态调用panel.remove(component)
。例如:
Component checkBox[] = checkBoxPanel.getComponents();
for(Component c:checkBox)
if(((JCheckBox)c).isSelected())
checkBoxPanel.remove(c);
checkBoxPanel.revalidate();
checkBoxPanel.repaint();
checkBoxPanel
上的最后一次调用revalidate()
和repaint()
对于反映组件布局和图形呈现的更改非常重要
- 您可以将
itemstener
与JCheckBox
的实例一起使用,以在选择状态更改时执行操作。使用ArrayList
的实例将选中的复选框添加到列表中。但是,您应该使用实现的ItemListener:MyItemListener实现ItemListener
,并创建一个实例,并将此实例添加到所有的复选框中,以对状态更改作出反应。您可以使用事件源e.getSource()
获取执行ItemEvent
的JCheckBox
实例
教程资源:
我可以想出两种方法:
- 如果您正在维护一个只包含
JCheckBox
实例的JPanel
实例,那么您可以首先使用panel.getComponents()
方法获取所有复选框,检查它们的选择状态,并根据状态调用panel.remove(component)
。例如:
Component checkBox[] = checkBoxPanel.getComponents();
for(Component c:checkBox)
if(((JCheckBox)c).isSelected())
checkBoxPanel.remove(c);
checkBoxPanel.revalidate();
checkBoxPanel.repaint();
checkBoxPanel
上的最后一次调用revalidate()
和repaint()
对于反映布局和图形上的更改非常重要