空中楼阁,是特效的天地.
第一篇东西,也没有什么好炫耀的,刚刚写了个旋转按钮盘,献给大家
.
package cn.edu.blog.easyhouse.fungui;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Point2D;
public class RotateButton implements Runnable{
private
static final int NUM_OF_BUTTONS = 10;
JButton
buttons[] ;
JPanel
panel;
//theta与按钮数目有关.offset用于控制偏移,speed控制按钮盘的速度和方向
double theta
= 0 , offset = 0 , speed = 0.1 ;
//线程睡眠长度
long sleep =
24;
//目前半径
int
currentRaduis;
//按钮盘中心
Point2D
currentCenter;
//标记是否停止转动
boolean
isWait = false;
//初始化
public
RotateButton(){
panel = new JPanel();
panel.setLayout(null);
buttons = new JButton[NUM_OF_BUTTONS];
for(int i = 0 ; i<NUM_OF_BUTTONS ; i++){
buttons[i] = new JButton(String.valueOf(i));
panel.add(buttons[i]);
Dimension d = buttons[i].getPreferredSize();
buttons[i].setBounds(i, i, d.width, d.height);
}
theta = Math.PI * 2 / NUM_OF_BUTTONS;
panel.addMouseMotionListener(new MML());
currentCenter = new Point2D.Double();
layout();
new Thread(this).start();
}
//自己布局按钮
private void
layout(){
Component c = panel.getParent();
int width , height;
int center_x = panel.getWidth() / 2 ,
center_y = panel.getHeight() / 2;
currentCenter.setLocation(center_x, center_y);
int raduis = getRaduis(center_x , center_y);
currentRaduis = raduis;
double incre = offset;