roundbutton.java

来自「主类CNC.java」· Java 代码 · 共 67 行

JAVA
67
字号
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Shape;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.Ellipse2D;

import javax.swing.JButton;

class RoundButton extends JButton {  //扩展按钮类,使按钮边框画出圆
	public RoundButton(String label) { 
	super(label);  //超类初始化,参数为按钮名字
//	 以下声明把按钮扩展为一个椭圆宽高比为2。 
	Dimension size = getPreferredSize(); 
	size.width = Math.max(size.width, 
	size.height); 
	 size.height = size.width/3;
	setPreferredSize(size); 
	setBackground(Color.ORANGE); 
//	这个调用使JButton不画背景,而允许我们画一个圆的背景。 
	setContentAreaFilled(false); 
	this.addMouseListener(new MouseAdapter(){
		public void mouseEntered(MouseEvent arg0) {	//鼠标进入的效果,为了显示的稍微象按钮	
			setBackground(Color.CYAN);
		}
		public void mouseExited(MouseEvent arg0) {  //鼠标离开后
			setBackground(Color.ORANGE); 
		}
	});
	}//构造结束 
//	 画圆的背景和标签 
	protected void paintComponent(Graphics g) { 
	if (getModel().isArmed()) { 
//	 你可以选一个高亮的颜色作为圆形按钮类的属性 
	g.setColor(Color.MAGENTA); 
	} else { 
	g.setColor(getBackground()); 
	} 
	g.fillOval(0, 0, getSize().width-1, 
	getSize().height-1); 
//	这个调用会画一个标签和焦点矩形。 
	super.paintComponent(g); 
	} 

//	 用简单的弧画按钮的边界。 
	protected void paintBorder(Graphics g) { 
		
	g.setPaintMode();
	g.setColor(Color.blue); 
	g.drawOval(0, 0, getSize().width-1, 
	getSize().height-1); 
	} 

//	 侦测点击事件 
	Shape shape; 
	public boolean contains(int x, int y) { 
//	 如果按钮改变大小,产生一个新的形状对象。 
	if (shape == null || !shape.getBounds().equals(getBounds())) { 
	shape = new Ellipse2D.Float(0,0,getWidth(),getHeight()); 
	} 
	return shape.contains(x, y); 
	} 
	
	} 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?