Добавить MouseListener в JCheckBox - PullRequest
       4

Добавить MouseListener в JCheckBox

1 голос
/ 31 октября 2010

Я написал этот код для предупреждающего сообщения, отображаемого пользователю, когда они снимают флажок.Он просыпается только тогда, когда в кнопке мыши реализована клавиша мыши.Если пользователь устанавливает флажок и снимает флажок, он позволяет снять флажок и не отображает предупреждающее сообщение.Как я могу решить эту ошибку?

public void mouseClicked(MouseEvent e) {        
    Vector matNoVect = new Vector();
    if (e.getClickCount() == 1) {
        Utools.setMouseBusy(sstEndProductMaterials.table);
        try {   
            Vector v = new Vector();
            v = Inter.LoadContents(str);
            System.out.println(v);
            if (v.size() > 0) {
                if (Integer.parseInt(v.get(0).toString()) > 0) {
                    JOptionPane.showMessageDialog(null,"Material "+matNo+" is used in some Item");
                    sstEndProductMaterials.table.setValueAt(new Boolean(true),index, 7);
                    Utools.setMouseNormal(sstEndProductMaterials.table);
                    return;
                }
            }    
        } catch (Exception e11) {
            e11.printStackTrace();
            Utools.setMouseNormal(sstEndProductMaterials.table);
        }
    }
}

Ответы [ 2 ]

3 голосов
/ 31 октября 2010

Используйте ItemListener вместо MouseListener

http://download.oracle.com/javase/tutorial/uiswing/components/button.html#checkbox

Затем вы можете сделать это внутри ItemListener:

public void itemStateChanged(ItemEvent event) {
    if (event.getStateChange() == ItemEvent.DESELECTED) {
        //Code to show alert etc.
    }
}
1 голос
/ 31 октября 2010
import java.awt.GridLayout;
import java.awt.event.*;
import javax.swing.*;

/** Some users are NOT addicted to the mouse!  Which is why
it would be better to add an ActionListener to a JCheckBox. */
class CheckBoxTest {

    public static void main(String[] args) {

        Runnable r = new Runnable() {
            public void run() {
                JPanel p = new JPanel(new GridLayout(0,1,20,20));

                JCheckBox cb1 = new JCheckBox("Broken on keyboard");
                cb1.addMouseListener( new MouseAdapter(){
                    @Override
                    public void mouseClicked(MouseEvent me) {
                        System.out.println("Mouse click");
                    }
                } );
                p.add( cb1 );

                JCheckBox cb2 = new JCheckBox("Works for keyboard or mouse!");
                cb2.addActionListener( new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent ae) {
                        System.out.println("Event detected!");
                    }
                } );
                p.add( cb2 );

                JOptionPane.showMessageDialog(null, p);
            }
        };
        SwingUtilities.invokeLater(r);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...