我的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。
答案 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);
}