swing 图像翻转 程序里面需要一个随时间变化图形翻转的功能, 就是自己在那儿转, 不知道swing里面有没有专门的方法呢?或者还是需要不停的重画?谢啦 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把正方形画在空image上,然后旋转image 以下例子是引用以为高手的,你试试。import java.awt.Color;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Image;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;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.JButton;import javax.swing.JFrame;import javax.swing.JPanel;public class Test4Rotate extends JFrame { private static final long serialVersionUID = 1L; public static void main(String[] args) { new Test4Rotate(); } public Test4Rotate() { setSize(500, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final MyPanel mp = new MyPanel(); getContentPane().add(mp); mp.addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent mouseevent) { int diagonal = (int)(50/Math.sin(Math.toRadians(45))); int x = 5 + (diagonal-50)/2; int y = 5 + (diagonal-50)/2; mp.bi = new BufferedImage(diagonal + 10 , diagonal + 10, BufferedImage.TRANSLUCENT); Graphics g = mp.bi.getGraphics(); g.setColor(Color.red); g.drawLine(x, y, x+50, y); g.setColor(Color.blue); g.drawLine(x+50, y, x+50, y+50); g.setColor(Color.green); g.drawLine(x, y, x, y+50); g.setColor(Color.orange); g.drawLine(x, y+50, x+50, y+50); mp.repaint(); } }); JButton jb = new JButton(); jb.setText("right 15°"); jb.setSize(80, 20); jb.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { mp.rotate = (mp.rotate + 15) % 360; mp.repaint(); } }); mp.add(jb); setVisible(true); } class MyPanel extends JPanel { private static final long serialVersionUID = 1L; private BufferedImage bi = null; private double rotate = 0; AffineTransform trans = null; private Image back = null; public MyPanel() { super(); setOpaque(false); trans = new AffineTransform(); try { back = ImageIO.read(new File("c:\\1.jpg")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override public void paintComponent(Graphics g) { g.drawImage(back, 0, 0, 500, 300, null); if (null != bi) { Graphics2D gg = (Graphics2D)g; trans.setToIdentity(); trans.setToRotation(Math.toRadians(rotate), bi.getWidth()/2, bi.getHeight()/2); //gg.drawImage(back, trans, null); gg.drawImage(bi, trans, null); } super.paintComponent(g); } }} 一个正则表达式的匹配输出问题 java中循环执行WebBrowser.Navigate方法,怎样实现加载一个网页结束后再开始加载下一个 关于初始化 oracle安装问题 请教这段是怎么工作的,, JList 获取某值所在项的序列号 请问volatile这个关键字是什么意思啊? 请教各位大虾,如何用java读取一个多行CSV文件???(高分求助,不够再加) 用i-buddie便携式电脑运行jbuilder、textpad,编译java程序效果怎么样啊? 一个入门问题,望高手指教! Runtime.getRuntime().exec()问题,高手帮帮忙... 大家帮忙给出经典的方法
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
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.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;public class Test4Rotate extends JFrame {
private static final long serialVersionUID = 1L; public static void main(String[] args) {
new Test4Rotate();
}
public Test4Rotate() {
setSize(500, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final MyPanel mp = new MyPanel();
getContentPane().add(mp);
mp.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent mouseevent) {
int diagonal = (int)(50/Math.sin(Math.toRadians(45)));
int x = 5 + (diagonal-50)/2;
int y = 5 + (diagonal-50)/2;
mp.bi = new BufferedImage(diagonal + 10 , diagonal + 10, BufferedImage.TRANSLUCENT);
Graphics g = mp.bi.getGraphics();
g.setColor(Color.red);
g.drawLine(x, y, x+50, y);
g.setColor(Color.blue);
g.drawLine(x+50, y, x+50, y+50);
g.setColor(Color.green);
g.drawLine(x, y, x, y+50);
g.setColor(Color.orange);
g.drawLine(x, y+50, x+50, y+50);
mp.repaint();
}
});
JButton jb = new JButton();
jb.setText("right 15°");
jb.setSize(80, 20);
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
mp.rotate = (mp.rotate + 15) % 360;
mp.repaint();
}
});
mp.add(jb);
setVisible(true);
}
class MyPanel extends JPanel {
private static final long serialVersionUID = 1L;
private BufferedImage bi = null;
private double rotate = 0;
AffineTransform trans = null;
private Image back = null; public MyPanel() {
super();
setOpaque(false);
trans = new AffineTransform();
try {
back = ImageIO.read(new File("c:\\1.jpg"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} @Override
public void paintComponent(Graphics g) {
g.drawImage(back, 0, 0, 500, 300, null);
if (null != bi) {
Graphics2D gg = (Graphics2D)g;
trans.setToIdentity();
trans.setToRotation(Math.toRadians(rotate), bi.getWidth()/2, bi.getHeight()/2);
//gg.drawImage(back, trans, null);
gg.drawImage(bi, trans, null);
}
super.paintComponent(g);
}
}}