जब मैं JCheckBox का चयन करता हूं, तो यह स्वतः ही अचयनित हो जाता है...

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

public class Math extends JFrame 
{
    private JPanel panel2 = new JPanel();
    private JCheckBox cb = new JCheckBox("Record Answers");

    //Constructor
    public Math()
    {
        setSize(300,300);
        setTitle("Math");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());

        panel2.add(cb);

        //add ActionListners
        cb.addItemListener(new listenerCb());

        add(panel2, BorderLayout.SOUTH);            
        setVisible(true);
    }

    //itemListner for cb
    public  class listenerCb implements ItemListener
    {
        public void itemStateChanged(ItemEvent e)
        {       
            if(cb.isSelected())
            {
                JOptionPane.showMessageDialog(null,"Example");

            }
        }
    }
    public static void main(String[] args) 
    {
        new Math();

    }

 }

जब भी मैं cb का चयन करने का प्रयास करता हूं, तो यह JOPtionPane पॉप अप हो जाता है और अचयनित हो जाता है। अगर मैं JOptionPane को हटा दूं, तो यह ठीक काम करता है।

0
user6566753 12 जुलाई 2016, 23:35
 – 
mKorbel
16 जुलाई 2016, 00:53

1 उत्तर

सबसे बढ़िया उत्तर

मुझे लगता है कि समस्या यह है कि विकल्प फलक कुछ घटनाओं को प्राप्त कर रहा है क्योंकि अब इसमें फोकस है।

एक समाधान कोड को SwingUtilities.invokeLater(...) में जॉप्शनपेन प्रदर्शित करने के लिए लपेटना है।

यह विकल्प फलक प्रदर्शित होने से पहले चेक मार्क को उसकी नई स्थिति में फिर से रंगने की अनुमति देगा।

public  class listenerCb implements ItemListener
{
    public void itemStateChanged(ItemEvent e)
    {
        if(cb.isSelected())
        {
            SwingUtilities.invokeLater(new Runnable()
            {
                public void run()
                {
                    JOptionPane.showMessageDialog(null,"Example");
                }
            });
        }
    }
}
2
camickr 12 जुलाई 2016, 23:47