2010-10-31 4 views
1

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

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); 
     } 
    } 
} 

ответ

1
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); 
    } 
} 
+1

+1 за хороший, предостерегающий пример; возможно, вы можете предпочесть 'ItemListener' над' ActionListener'. http://download.oracle.com/javase/tutorial/uiswing/components/button.html – trashgod

Смежные вопросы