Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java swing删除所选复选框_Java_Swing_Jcheckbox - Fatal编程技术网

使用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() {

我不熟悉java swing。我有一个生成复选框的代码。我想在我的框架中的某个地方有一个按钮,单击该按钮应删除选中的复选框条目。这是我到目前为止所拥有的

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()
      对于反映布局和图形上的更改非常重要