?? roundbutton.java
字號:
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 + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -