什么是浮动菜单??
是不是右键的快捷菜单
给你个例子
import java.awt.*;
import javax.swing.*;
public class PopupMenu1 extends JApplet
{
public void init()
    {
     JPopupMenu fileMenu=new JPopupMenu("File");
     JMenuItem i1=new JMenuItem("New");
     JMenuItem i2=new JMenuItem("Open");
     JMenuItem i3=new JMenuItem("save");
     fileMenu.add(i1);
     fileMenu.add(i2);
     fileMenu.add(i3);
     JRadioButton b=new JRadioButton("button2");
     fileMenu.add(b);
        fileMenu.show(b,150,150);  
     fileMenu.setLocation(200,400);
    }
}    
上面是个applet,在网页中有菜单
JFrame上的实现我现在手头没有,有个复杂拿出来没用

解决方案 »

  1.   

    public class RolloverJButton extends JButton
    implements MouseListener {
    private Border normalBorder = BorderFactory.createEmptyBorder(1, 1, 1, 1);
    private Border rolloverBorder = BorderFactory.createLineBorder(Color.black);
    private Border pressedBorder = BorderFactory.createLineBorder(Color.black);
    private Border releasedBorder = BorderFactory.createLineBorder(Color.black);
    private Color normalColor = Color.black;
    private Color rolloverColor = Color.red;
    private Color pressedColor = Color.blue;
    private Color releasedColor = Color.red;
    private Color normalBackgroundColor = SystemColor.control;
    private Color rolloverBackgroundColor = new Color(204, 204, 255);
    private Color pressedBackgroundColor = new Color(180, 180, 240);
    private Color releasedBackgroundColor = new Color(204, 204, 255);
    java.applet.AudioClip rolloverAudio = AudioFactory.getRolloverAudio();
    java.applet.AudioClip pressAudio = AudioFactory.getPressAudio();    /**
         * Creates a button with no set text or icon.
         */
        public RolloverJButton() {
            this(null, null);
        }    /**
         * Creates a button with an icon.
         *
         * @param icon  the Icon image to display on the button
         */
        public RolloverJButton(Icon icon) {
            this(null, icon);
        }    /**
         * Creates a button with text.
         *
         * @param text  the text of the button
         */
        public RolloverJButton(String text) {
            this(text, null);
        }    /**
         * Creates a button where properties are taken from the
         * Action supplied.
         *
         * @since 1.3
         */
        public RolloverJButton(Action a) {
            this();
    setAction(a);
        }    /**
         * Creates a button with initial text and an icon.
         *
         * @param text  the text of the button.
         * @param icon  the Icon image to display on the button
         */
        public RolloverJButton(String text, Icon icon) {
           super(text, icon);
           addMouseListener(this);
            setBorder(getNormalBorder());
            setRolloverEnabled(true);
           setFocusPainted(false);
           // Display text below icon
           setHorizontalTextPosition(SwingConstants.CENTER);
           setVerticalTextPosition(SwingConstants.BOTTOM);
        }
        
        public Border getNormalBorder() {
         return normalBorder;
        }
        
        public void setNormalBorder(Border border) {
         normalBorder = border;
         repaint();
        }    
        public Border getRolloverBorder() {
         return rolloverBorder;
        }
        
        public void setRolloverBorder(Border border) {
         rolloverBorder = border;
         repaint();
        }    
        public Border getPressedBorder() {
         return pressedBorder;
        }
        
        public void setPressedBorder(Border border) {
         rolloverBorder = border;
         repaint();
        }    
        public Border getReleasedBorder() {
         return releasedBorder;
        }
        
        public void setReleasedBorder(Border border) {
         releasedBorder = border;
         repaint();
        }    
        public Color getNormalColor() {
         return normalColor;
        }
        
        public void setNormalColor(Color color) {
         normalColor = color;
         repaint();
        }    public Color getRolloverColor() {
         return rolloverColor;
        }
        
        public void setRolloverColor(Color color) {
         rolloverColor = color;
         repaint();
        }    public Color getPressedColor() {
         return pressedColor;
        }
        
        public void setPressedColor(Color color) {
         pressedColor = color;
         repaint();
        }    public Color getReleasedColor() {
         return releasedColor;
        }
        
        public void setReleasedColor(Color color) {
         releasedColor = color;
         repaint();
        }    public Color getNormalBackgroundColor() {
         return normalBackgroundColor;
        }
        
        public void setNormalBackgroundColor(Color color) {
         normalBackgroundColor = color;
         repaint();
        }    public Color getRolloverBackgroundColor() {
         return rolloverBackgroundColor;
        }
        
        public void setRolloverBackgroundColor(Color color) {
         rolloverBackgroundColor = color;
         repaint();
        }    public Color getPressedBackgroundColor() {
         return pressedBackgroundColor;
        }
        
        public void setPressedBackgroundColor(Color color) {
         pressedBackgroundColor = color;
         repaint();
        }    public Color getReleasedBackgroundColor() {
         return releasedBackgroundColor;
        }
        
        public void setReleasedBackgroundColor(Color color) {
         releasedBackgroundColor = color;
         repaint();
        } /**
       * Implements of interface java.awt.event.MouseListener.
       */
        public void mouseClicked(MouseEvent e) { }    public void mouseEntered(MouseEvent e) {
          // Must first test the button's enable state
          if(!isEnabled()) return;
          setBorder(getRolloverBorder());
          setForeground(getRolloverColor());
          setBackground(getRolloverBackgroundColor());
      rolloverAudio.play();
        }    public void mouseExited(MouseEvent e) {
      setBorder(getNormalBorder());
          setForeground(getNormalColor());
          setBackground(getNormalBackgroundColor());
        }    public void mousePressed(MouseEvent e) {
          // Must first test the button's enable state
          if(!isEnabled()) return;
          if( !SwingUtilities.isLeftMouseButton(e) ) return;
          setBorder(getPressedBorder());
          setForeground(getPressedColor());
          setBackground(getPressedBackgroundColor());
      pressAudio.play();
        }    public void mouseReleased(MouseEvent e) {
          if(!isEnabled()) return;
      if( !SwingUtilities.isLeftMouseButton(e) ) return;
          setBorder(getReleasedBorder());
          setForeground(getReleasedColor());
          setBackground(getReleasedBackgroundColor());
        }

    //看看这个怎么样。是别人写。