在java Applet里如何实现鼠标滚轮放大缩小图片?

 我来答
g470657538
2011-11-03 · TA获得超过211个赞
知道小有建树答主
回答量:190
采纳率:53%
帮助的人:104万
展开全部
创建鼠标滚轮监听事件MouseWheelListener,MouseWheelEvent e,
int num=e.getWheelRotation(); 这个用来得到滚轮转动的方向与单位数,正数表示向下旋转,负数表示向上旋转,绝对值表示转动的单位。
然后你再改变图片的大小和位置,然后 refresh();
建议用JLabel来显示图片,然后在鼠标的滚轮事件中改变JLabel的大小和位置就OK了,具体的自己去实现。
看来得给你个例子啊!关键点1:按比例缩放图片;2:this.repaint();之前写错了不好意思啊
public class Anniu extends JFrame implements MouseWheelListener {

private static final long serialVersionUID = 1L;

JLabel jl = null;
ImageIcon image = new ImageIcon("F://12.jpg");
public Anniu() {

}

public void init() {
setLayout(null);

jl = new JLabel(image);
setSize(800, 600);
jl.setBounds(300, 200, 200, 200);
add(jl);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addMouseWheelListener(this);
setVisible(true);
}

@Override
public void mouseWheelMoved(MouseWheelEvent e) {
// TODO Auto-generated method stub
int num = e.getWheelRotation();
int x = (this.getWidth() - jl.getWidth()) / 2;
int y = (this.getHeight() - jl.getHeight()) / 2;
int width=jl.getWidth()+ 2 * num;
int height=jl.getHeight()+ 2 * num;
jl.setIcon(new ImageIcon( image.getImage().getScaledInstance(width, height, Image.SCALE_SMOOTH))); //重点1:按所给的大小来设置图片,不管图片有多大,总是全图显示,可能导致失真!你可以加一个大小限制,超过图片大小了则不再放大。
jl.setBounds(x + num, y + num, width, height);
this.repaint(); //刷新屏幕
}
紫薇参星
科技发烧友

2011-11-02 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3462万
展开全部
按照你的要求实现鼠标滚轮放大缩小图片的程序如下:(注意图像文件放在当前Project目录下的bin目录下)
import java.awt.*;
import java.applet.*;
import java.net.*;
import java.awt.event.*;

public class Test22 extends Applet implements MouseWheelListener
{
Image image1;
Graphics g1;
int x,y;
public void init()
{
image1=getImage( getCodeBase() ,"1.jpg");
this.addMouseWheelListener(this);
g1=this.getGraphics();
x=getWidth();
y=getHeight();
}
public void paint(Graphics g)
{
g.drawImage(image1,0,0,x,y,this);

}
public void mouseWheelMoved(MouseWheelEvent e){
if(e.getWheelRotation()==1){
x=x+10;
y=y+10;
g1.drawImage(image1,0,0,x,y,this);
repaint();
this.setSize(x, y);
}else if (e.getWheelRotation()==-1){
x=x-10;
y=y-10;
g1.drawImage(image1,0,0,x,y,this);
repaint();
this.setSize(x, y);
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式