鼠标点击一次就能返回一个dg值,如何作?用IO流?
package machinarium;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;
public class Icon extends JFrame{
public static void main(String[] args){
new Icon();
}
public Icon(){
RotatedPanel p=new RotatedPanel();
p.setSize(150,150);
JPanel p1=new JPanel();
p1.setSize(300,300);
add(p);
setSize(500,500);
setVisible(true);
}
}
class RotatedPanel extends JPanel{
int i=0;
ImageIcon pointer;
M toRotated=new M();
public int getNumber(){
return 0;
}
public RotatedPanel(){
addMouseListener(toRotated);
}
class M extends MouseAdapter{
int dg=0;
public M(){
i=dg;
}
int getNumber(){
return dg;
}
public void mouseClicked(MouseEvent e) {
int num=e.getClickCount();
if(dg%360==0){
dg=0;
i=0;
}
dg+=72;
System.out.println("dg "+dg);
Thread t=new Thread(new Rotate());
t.start();
}
class Rotate implements Runnable{
public void run() {
while(i<dg){
try {
i++;
Thread.sleep(10);
repaint();
if(i>=360&&dg==360){
i=0;dg=0;
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
public void paint(Graphics g){
try {
Image image=ImageIO.read(new File("pointer.png"));
AffineTransform at = new AffineTransform();
at.rotate(Math.toRadians(i), image.getWidth(null)/2, image.getHeight(null)/2);
//BufferedImage buffer=new BufferedImage();
BufferedImage bufferImage=new BufferedImage(image.getWidth(null),image.getHeight(null),BufferedImage.TYPE_INT_RGB);
Graphics2D g2=bufferImage.createGraphics();
g2.setTransform(at);
g2.drawImage(image,null,null);
pointer=new ImageIcon(bufferImage);
} catch (Exception e) {
e.printStackTrace();
}
g.setColor(Color.RED);
g.drawImage(pointer.getImage(),100,20,null);
}
}
/***/