Swing中如何实现图像的缩放功能 sun上有很多例子。http://java.sun.com/products/java-media/jai/足够实现你的要求了。有例子,比较棒的那一种。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 应该是用java2d来实现的,具体怎么实现没有做过。 public class test12 extends JLabel { ImageIcon image = new ImageIcon("f:/mytest/img/test1.jpg"); Point pressed, last; boolean firstRect; public test12() { try { setBackground(Color.green) ; setIcon(image) ; } catch (Exception e) { } addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { firstRect = true; pressed = e.getPoint() ; } public void mouseReleased(MouseEvent e) { if (pressed != null) { Point released = e.getPoint() ; Rectangle clip = new Rectangle(); Graphics g = getGraphics(); Dimension size = getSize(); try { clip.x = pressed.x; clip.y = pressed.y; clip.width = Math.abs(released.x = released.y) ; clip.height = Math.abs(released.y - pressed.y); g.clearRect(0,0,size.width, size.height); g.setClip(clip); g.drawImage(image.getImage(),0,0,test12.this); } finally { g.dispose() ; } } } public void mouseClicked(MouseEvent e) { repaint(); } }); addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { Point loc = e.getPoint() ; Graphics g = getGraphics(); try { g.setXORMode(getBackground()); if (firstRect) { firstRect = false; } else { //System.out.println(last.x +" "+last.y) ; g.drawRect(pressed.x , pressed.y , Math.abs(pressed.x - loc.x), Math.abs(pressed.y - loc.y)); } g.drawRect(pressed.x, pressed.y , Math.abs(loc.x-pressed.x), Math.abs(loc.y - pressed.y)); } finally { g.dispose(); } } }); } public void paint(Graphics g) { g.drawImage(image.getImage(),0,0,this); }}public class Frame1 extends JFrame { private test12 jPanel1 = new test12(); public Frame1() { try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } public static void main(String[] args) { Frame1 frame1 = new Frame1(); frame1.setSize(750,600) ; frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame1.setVisible(true) ; } private void jbInit() throws Exception { this.getContentPane().setLayout(null); jPanel1.setSize(95,50); //jPanel1.update(); //jPanel1.setBounds(new Rectangle(8, 10, 332, 265)); this.getContentPane().add(jPanel1, null); //this.getContentPane().add(jPanel2, null); } 一个很有意思的问题,MyEclipse下可以正常运行,命令行中运行报错 有人能帮我看看这个程序么?读入一个文件到另外一个文件的方法! 考二级java时用不用把编译后生成的class文件删除掉后再交卷? 如何把一串字符串转换成二进制后存入数据库,然后再从数据库中读取出来,转回原来的字符串? 能不安装jdk,就运行java程序嘛 关于分页的问题 朋友被这个网站扣手机费,知道地址怎么也打不开!有兴趣的来看看! 有人在poi里操作过chart吗?能否提供例子? 怎样才能用java实现图片随机动态效果? 请大家看一看 jdbc在哪下载、安装? 对话框里,如何将焦点设到指定的按钮
具体怎么实现没有做过。
ImageIcon image = new ImageIcon("f:/mytest/img/test1.jpg");
Point pressed, last;
boolean firstRect; public test12() {
try {
setBackground(Color.green) ;
setIcon(image) ;
} catch (Exception e) { } addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
firstRect = true;
pressed = e.getPoint() ;
} public void mouseReleased(MouseEvent e) {
if (pressed != null) {
Point released = e.getPoint() ;
Rectangle clip = new Rectangle();
Graphics g = getGraphics();
Dimension size = getSize(); try {
clip.x = pressed.x;
clip.y = pressed.y;
clip.width = Math.abs(released.x = released.y) ;
clip.height = Math.abs(released.y - pressed.y);
g.clearRect(0,0,size.width, size.height);
g.setClip(clip);
g.drawImage(image.getImage(),0,0,test12.this);
} finally {
g.dispose() ;
}
}
} public void mouseClicked(MouseEvent e) {
repaint();
}
});
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
Point loc = e.getPoint() ;
Graphics g = getGraphics(); try {
g.setXORMode(getBackground());
if (firstRect) {
firstRect = false;
} else {
//System.out.println(last.x +" "+last.y) ;
g.drawRect(pressed.x , pressed.y , Math.abs(pressed.x - loc.x), Math.abs(pressed.y - loc.y)); }
g.drawRect(pressed.x, pressed.y , Math.abs(loc.x-pressed.x), Math.abs(loc.y - pressed.y)); } finally {
g.dispose();
}
}
});
} public void paint(Graphics g) {
g.drawImage(image.getImage(),0,0,this);
}
}
public class Frame1 extends JFrame {
private test12 jPanel1 = new test12(); public Frame1() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Frame1 frame1 = new Frame1();
frame1.setSize(750,600) ;
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame1.setVisible(true) ;
}
private void jbInit() throws Exception {
this.getContentPane().setLayout(null);
jPanel1.setSize(95,50);
//jPanel1.update();
//jPanel1.setBounds(new Rectangle(8, 10, 332, 265));
this.getContentPane().add(jPanel1, null);
//this.getContentPane().add(jPanel2, null);
}