【问题标题】:Assigning ID to dynamically created JCheckBoxes将 ID 分配给动态创建的 JCheckBoxes
【发布时间】:2016-02-19 15:54:13
【问题描述】:

我的 GUI 中有两个组件,一个是 JButton,另一个是 JCheckBox。在 Button Click 事件中,将创建一个新的 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


我在谷歌上搜索了很多关于这个特定场景的信息,并在 stackoverflow 中进行了搜索,以查找之前提出的任何问题是否满足我的需求,但我没有发现任何有用的信息。

已经有一个关于stackoverflow的问题,下面提供了链接,但这不是gui基础。

previous question

【问题讨论】:

标签: java swing


【解决方案1】:

也许以下方法会起作用:

// 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())
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-30
  • 1970-01-01
  • 2021-12-28
  • 2021-05-30
  • 2011-10-08
  • 2013-03-25
相关资源
最近更新 更多