大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > Java技巧 > Java实现任意形状的按钮制作

Java实现任意形状的按钮制作


[摘要]本文主要是对Java实现任意形状的按钮制作的讲解,希望对大家学习Java实现任意形状的按钮制作有所帮助。

  任意形状的按钮制作:

  import javax.swing.*;

  import java.awt.*;

  import java.awt.event.*;

  public class AnyShapeButton extends JButton{

  Polygon shape;

  // 任意 shape 按钮构造函数

  public AnyShapeButton(Polygon p) {

  init(p);

  }

  // 任意 shape 按钮构造函数

  public AnyShapeButton(int[] y,int[] x) {

  Polygon p = new Polygon(x,y,x.length);

  init(p);

  }

  private void init(Polygon p){

  shape = p;

  setOpaque(false);

  setPreferredSize();

  setBorder(null);

  // hot tracking process

  addMouseListener(new MouseAdapter(){

  public void mouseEntered(MouseEvent e) {

  Hot();

  }

  public void mouseExited(MouseEvent e) {

  Normal();

  }

  });

  }

  public void setPreferredSize() {

  Rectangle b = shape.getBounds(); // 取得 shape 最大外框

  setPreferredSize(new Dimension(b.width, b.height)); // 配置目前组件的宽高, 以方便 Layout 作业

  }

  public void Hot(){

  curColor=java.awt.Color.yellow;

  repaint();

  }

  public void Normal(){

  curColor=java.awt.Color.red;

  repaint();

  }

  // 画出组件的内容: 验证组件的 shape 确实如设计一般

  java.awt.Color curColor=java.awt.Color.red;

  public void paintComponent(Graphics g ) {

  g.setColor(curColor);

  g.fillPolygon(shape);

  }

  // 提供 UI 决定鼠标是否落在组件的内部

  public boolean contains(int x, int y ) {

  return shape.contains(x,y);

  }

  }



相关评论