Jbutton插上小旗后,再单击右键去掉小旗,单击左键无反应。若去掉监听器,如何再反应右键。
vc中重载PreTranslateMessage可以实现。java如何做。希望大家给个思路。谢谢.

解决方案 »

  1.   

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class Frame1 extends Frame {
        public JButton b1 = new JButton(" b1 ");
        public Frame1() {
            this.setLayout(null);
            b1.addMouseListener(new java.awt.event.MouseAdapter() {
                public void mouseClicked(MouseEvent e) {
                    b1_mouseClicked(e);
                }
            });
            b1.setBounds(new Rectangle(100, 39, 55, 22));
            this.add(b1);
        }  void b1_mouseClicked(MouseEvent e) 
      {
      if(!SwingUtilities.isRightMouseButton(e))
      return;
      //...do whatever you want
      }    public static void main(String[] args) {
            Frame1 frame = new Frame1();
            frame.addWindowListener(
                new WindowAdapter() {
                    public void windowClosing(WindowEvent e) {
                        System.exit(0);
                    }
                });
            frame.setSize(300, 400);
            frame.setVisible(true);
        }
        
      

  2.   

    To masterz():这招不灵。单击鼠标左键,jbutton依然按下。
    不知各位有何高招。谢谢。
      

  3.   

    必须自己来实现一个新的jbutton。
      

  4.   

    /*
     A basic extension of the java.applet.Applet class
     */
    import java.awt.*;
    import java.lang.*;
    import java.applet.*;public class DoubleClickApplet extends Applet 
    {
       String mouseClickedString = "Mouse event : none";
       String mouseClickedString2 = "Mouse double click : no";
       long lastDownTime = 0;
       final static long DOUBLE_CLICK_TIME = 500;
       public boolean mouseDown(Event evt, int x, int y) 
       {
          if((evt.when - lastDownTime) < DOUBLE_CLICK_TIME) 
             mouseDoubleClick(evt, x, y);
          else 
          {
             mouseClickedString2 = "Mouse double click : no";
             repaint();
          }
          lastDownTime = evt.when;
          mouseClickedString = "Mouse event : mouseDown";
          getAppletContext().showStatus("Mouse Click");
          repaint();
          return false;
       }
       public boolean mouseDoubleClick(Event evt, int x, int y) 
       {
          mouseClickedString2 = "Mouse double click : yes";
          getAppletContext().showStatus("Mouse Double Click");
          repaint();
          return false;
       }
       public boolean mouseDrag(Event evt, int x, int y) 
       {
          mouseClickedString = "Mouse event : mouseDrag";
          getAppletContext().showStatus("Mouse Drag");
          repaint();
          return false;
       }
       public boolean mouseEnter(Event evt, int x, int y) 
       {
          mouseClickedString = "Mouse event : mouseEnter";
          getAppletContext().showStatus("Mouse Enter");
          repaint();
          return false;
       }
       public boolean mouseExit(Event evt, int x, int y) 
       {
          mouseClickedString = "Mouse event : mouseExit";
          getAppletContext().showStatus("Mouse Exit");
          repaint();
          return false;
       }
       public boolean mouseUp(Event evt, int x, int y) 
       {
          mouseClickedString = "Mouse event : mouseUp";
          getAppletContext().showStatus("Mouse Up");
          repaint();
          return false;
       }
       //  public boolean mouseMove(Event evt,int x,int y)
       //  {
       //    mouseClickedString="Mouse event : mouseMove";
       //    mouseClickedString2="Mouse double click : no";
       //    repaint();
       //    return false;
       //  }
       public void paint(Graphics g) 
       {
          g.drawString(mouseClickedString, 20, 20);
          g.drawString(mouseClickedString2, 20, 50);
       }
    }
      

  5.   

    重载mouseClick事件,使之在点击左键时不做任何动作