email:
  [email protected]

解决方案 »

  1.   

    这是一个圆形的button的例子!
    你可以改一改!
    import java.awt.*;
    import java.awt.geom.*;
    import javax.swing.*;
    import java.awt.event.*;public class RoundButton extends JButton {
        public RoundButton(String label) {
            super(label);        // These statements enlarge the button so that it 
            // becomes a circle rather than an oval.
            Dimension size = getPreferredSize();
            //size.width = size.height = Math.max(size.width, 
            //                                   size.height);
            size.width=100;
            size.height=46;
            setPreferredSize(size);        // This call causes the JButton not to paint 
            // the background.
            // This allows us to paint a round background.
            setContentAreaFilled(false);    }    // Paint the round background and label.
        protected void paintComponent(Graphics g) {
            
            Graphics2D g2D=(Graphics2D)g;
            if (getModel().isArmed()) {
               if (getModel().isPressed()){
                   g2D.setColor(Color.darkGray);
                   setForeground(Color.white);
            }else    
            // You might want to make the highlight color 
            // a property of the RoundButton class.
                g2D.setColor(Color.lightGray);
                setForeground(Color.black);
            } else {
            g2D.setColor(getBackground());
           
            }
            g2D.fillOval(0, 0, getSize().width-1, 
                               getSize().height-1);        // This call will paint the label and the 
            // focus rectangle.
            super.paintComponent(g2D);
       }    // Paint the border of the button using a simple stroke.
        protected void paintBorder(Graphics g) {
            Graphics2D g2D=(Graphics2D)g;
            g2D.setColor(getForeground());
            //g2D.setColor(Color.blue);
            g2D.drawOval(0, 0,getSize().width-1, 
                              getSize().height-1);
                                
        }
      /*  
        // Hit detection.
        Shape shape;
        public boolean contains(int x, int y) {
            // If the button has changed size, 
            // make a new shape object.
            if (shape == null || 
            !shape.getBounds().equals(getBounds())) {
            shape = new Ellipse2D.Float(0, 0, 
                getWidth(), getHeight());
            }
            return shape.contains(x, y);
        }
        */
        // Test routine.
        public static void main(String[] args) {
        // Create a button with the label "Jackpot".
            JButton button = new RoundButton("Jackpot");
            button.setBackground(Color.green);        // Create a frame in which to show the button.
            JFrame frame = new JFrame();
            //frame.getContentPane().setBackground(Color.magenta);
            frame.getContentPane().add(button);
            frame.getContentPane().setLayout(new FlowLayout());
            frame.setSize(150, 150);
            frame.setVisible(true);
        }
    }