Java 将ID分配给动态创建的JCheckbox
我的GUI中有两个组件,一个是JButton,另一个是JCheckBox。在按钮点击事件中,将创建一个新的JFrame,具有相同的两个组件 所以我的问题是: 如何在动态创建的JFrame中为动态创建的JCheckBox分配唯一ID 这是我的密码Java 将ID分配给动态创建的JCheckbox,java,swing,Java,Swing,我的GUI中有两个组件,一个是JButton,另一个是JCheckBox。在按钮点击事件中,将创建一个新的JFrame,具有相同的两个组件 所以我的问题是: 如何在动态创建的JFrame中为动态创建的JCheckBox分配唯一ID 这是我的密码 import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; public cla
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")
JOptionPane.showMessageDialog(null,"JFrame2 Mute 2 is clicked")
现在,如果单击JFrame2 JcheckBox,则会显示MessageBox
JOptionPane.showMessageDialog(null,"JFrame1 Mute 1 is clicked")
JOptionPane.showMessageDialog(null,"JFrame2 Mute 2 is clicked")
等等来管理JCheckbox
我在谷歌上搜索了很多关于这个特殊场景的信息,也在stackoverflow中搜索,以发现之前提出的任何问题是否满足了我的需要,但我没有发现任何有用的东西 已经有一个关于stackoverflow的问题,下面提供了链接,但这不是gui基础
也许以下方法可以奏效:
// 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);
}
是的,成功了:)在我的程序中添加上述代码,只需在我的程序中修改一行代码
JOptionPane.showMessageDialog(null,“Mute”+createUniqueId())
”。将创建一个新的JFrame..”不知何故,使用多个JFrame不是一种好的做法,但在某些情况下,它最适合您的应用程序。