#创建画图界面
public class Drawpad{
public static void main(String[]args){
Drapad drapad=new Drapad();
drapad.showUI();
}
public void showUI(){
javax.swing.JFrame jf=new javax.swing.JFrame;
jf.setSize(500,600);
jf.setTitle("3D图形");
jf.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_COLSE);
jf.setLocationRelativeTo(null);
java.awt.FlowLayout fl=new java.awt.FlowLayout;
jf.setLayout(fl);
Mousemotionlistener m=new Mousemotionlistener();
jf.addMouseMotionListener(m);//添加拖动监听器
String []btnstrs={"隧道","棋子"};
for(int i=0;i<btnstrs.lenth;i++){
JButton btn=new JButton(btnstrs[i]);
jf.add(btn);
btn.addActionListener(m);
}
Color []colors={Color.red,Color.green,Color.blue,Color.black};
for(int i=0;i<color.length;i++) {
JButton btn=new JButton();
btn.setBackground(colors[i]);
jf.add(btn);
btn.addActionlistener(m);
jf.setVisiable(true);
Graphics g=jf.getGraphics;
m.g=g;
监听器界面
3D图形的关键
1.颜色的渐变(例如隧道和棋子都是向圆心逐渐变白)
2.保证颜色的像素值范围
2.圆心的偏移决定“影子”的方向
import java.awt.color;
public class Mousemotionlistener implements MouseMotionListener,ActionListener{
public Graphics g;
String btnstrs;
Color color;
public void actionPerformed(ActionEvent e) {
btnstrs=e.getActionCommand();
if(btnstrs.equal("")){
JButton btn=(JButton)e.getSourse();
color=btn.getBackGround();
}
}
public void mouseDragged(MouseEvent e){
int x1=e.getX();int y1=e.getY();
int cr=(255-e.getRed());/100 //保证在循坏的过程中不会越界
int cb=(255-e.getBlue());/100
int cg=(255-e.getGreen());/100
if(btnstrs.equals("隧道"){
for(int i=0;i<100;i++){
Color c=new Color(color.getRed-i*cr,color.getGreen-i*cg,color.getBlue-i*CB);
g.setColor(c);
g.drawOval(x1+i/2,y1+i/2,100-i/2,100-i/2);//空心圆
}
}
else if(btnstrs.equals("Chess")){
for(int i=0;i<50;i++) {
Color c=new Color(color.getRed()+cr*i,color.getGreen()+cg*i,color.getBlue()+cb*i);
g.setColor(c);
g.fillOval(x1+i, y1+i, 100-i*2, 100-i*2);//实心圆
}
}
}
public void mouseMoved(MouseEvent e){
}
}