为动态创建的JCheckBoxes分配ID

时间:2016-02-19 07:46:38

标签: java swing

我的GUI中有两个组件,一个是JButton,另一个是JCheckBox。在按钮单击事件上,将创建一个新的JFrame,具有相同的两个组件。

所以来到我的问题:

如何在动态创建的JFrame中为动态创建的JCheckBox分配唯一ID?

这是我的代码。

    


    import javax.swing.*;
    import javax.swing.event.*;
    import java.awt.*;
    import java.awt.event.*;

    public class HandlingDynamicJCheckBoxes extends JFrame implements ActionListener{

        public JFrame frame;
        public Container container;
        public JPanel panel;
        public JCheckBox chkBox;
        public JButton createThreads;

        public HandlingDynamicJCheckBoxes(){

            init();    
        }

        public void init(){

            frame = new JFrame("Dynamic JCheckBoxes");
            container = frame.getContentPane();
            frame.setLayout(new FlowLayout());
            chkBox = new JCheckBox("Mute", true);
            createThreads = new JButton("Create Threads");
            panel = new JPanel();
            panel.setLayout(new BorderLayout());
            panel.add(chkBox,BorderLayout.CENTER);
            panel.add(createThreads,BorderLayout.SOUTH);
            container.add(panel);

            chkBox.addActionListener(this);
            createThreads.addActionListener(this);

            frame.setSize(300,300);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);

        }

        public static void main(String[] args){
            SwingUtilities.invokeLater(new Runnable(){

                @Override
                public void run() {

                    HandlingDynamicJCheckBoxes obj = new HandlingDynamicJCheckBoxes();

                }      
            });     
        }

        @Override
        public void actionPerformed(ActionEvent e) {

            if(e.getActionCommand() == "Create Threads"){

                Thread thread = new Thread(){

                    HandlingDynamicJCheckBoxes obj = new HandlingDynamicJCheckBoxes();

                };
                thread.start();

            }

            else if(e.getActionCommand() == "Mute"){

                JOptionPane.showMessageDialog(null, "Hello");

            }      
        }      
    }


现在如果单击JFrame1 JcheckBox,将显示消息

 JOptionPane.showMessageDialog(null,"JFrame1 Mute 1 is clicked") 

现在如果点击了JFrame2 JcheckBox,那么MessageBox将显示

 JOptionPane.showMessageDialog(null,"JFrame2 Mute 2 is clicked") 

等管理JCheckBoxes

我有很多关于这个特定情况的google并在stackoverflow中搜索,以查找是否有任何先前提出的问题满足了我的需要,但我没有找到任何有用的信息。

在stackoverflow上已经有一个问题,下面提供的链接,但这不是gui base。

previous question

1 个答案:

答案 0 :(得分:0)

以下可能会有效:

// Add a 'global' variable within your frame
private static int last_generated_id = 0;

// Add a method that generates and returns a new unique ID
private static synchronized int createUniqueID()
{
    last_generated_id++;
    return (last_generated_id);
}