java Swing 滚动滑轮改变图片大小
2017-08-23 16:15
309 查看
import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Toolkit; import java.awt.event.MouseWheelEvent; import java.awt.event.MouseWheelListener; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JPanel; public class QuoteBasisPhotoUtils extends JFrame { /** * */ private static final long serialVersionUID = 1L; private ZoomPanel zp; public QuoteBasisPhotoUtils() { } public QuoteBasisPhotoUtils(String file) { // 获取屏幕大小 Dimension frameSize = Toolkit.getDefaultToolkit().getScreenSize(); frameSize.width = frameSize.width / 2; frameSize.height = frameSize.height * 3 / 4; setSize(frameSize); setLocationRelativeTo(null);// 居中显示 // JScrollPane scrollPane_1 = new JScrollPane(); // getContentPane().add(scrollPane_1, BorderLayout.CENTER); // scrollPane_1 // .setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); zp = new ZoomPanel(frameSize, file); getContentPane().add(zp); // scrollPane_1.setViewportView(zp); // 添加鼠标滚轮消息响应 addMouseWheelListener(new MouseWheelListener() { public void mouseWheelMoved(MouseWheelEvent e) { // 滚轮向前滑动 放大 if (e.getWheelRotation() < 0) { zp.enlargeImg(); } // 滚轮向后滑动 缩小 else { zp.reduceImg(); } } }); // setUndecorated(true);// 去掉修饰框 // setDefaultCloseOperation(3); setResizable(false); setVisible(true); } } // 缩放面板 class ZoomPanel extends JPanel { /** * */ private static final long serialVersionUID = 1L; private ImageIcon ii; private Dimension frameSize; private int x, y, width, height;// 图片的坐标、缩放的size public ZoomPanel(Dimension fs, String imgPath) { setBackground(Color.WHITE); setToolTipText("滑动滚轮可缩小放大图片"); this.frameSize = fs; ii = new ImageIcon(imgPath); // width = ii.getIconWidth(); // height = ii.getIconHeight(); width = 500; height = 707; setImgPos(); } // 设定x、y坐标 public void setImgPos() { x = (frameSize.width - width) / 2; y = (frameSize.height - height) / 2; } // 放大 public void enlargeImg() { if (width >= ii.getIconWidth() * 2) { return; } if (height >= ii.getIconHeight() * 2) { return; } width += width / 9; // 这里为什么是除以9呢 这个是数学问题 留给大家自己想吧 要是不明白,可以留言 height += height / 9; setImgPos(); repaint(); } // 缩小 public void reduceImg() { if (width <= ii.getIconWidth() / 5) { return; } if (height <= ii.getIconHeight() / 5) { return; } width -= width / 10; height -= height / 10; setImgPos(); repaint(); } // 重绘 public void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(ii.getImage(), x, y, width, height, null); } }
相关文章推荐
- 纯java代码 改变图片的大小
- js改变图片大小——把鼠标放图片上,滚动鼠标滚轮.
- 图片大小随鼠标滚动而改变的兼容IE和firefox的代码
- java压缩图片内存大小,但不改变分辨率大小,第二种方式
- 简洁的滚动鼠标 改变图片大小js
- Java改变图片的大小
- 图片大小随鼠标滚动而改变的兼容IE和firefox的代码[转]
- 使用javaswing设定背景图片为窗体大小(原创)
- Java改变图片的大小
- Java改变图片的大小
- Java改变图片的大小
- 简单的改变图片大小的java工具类
- Java操作图片改变大小加水印
- 滑轮改变图片大小
- javascript 滚动鼠标轮改变图片大小
- java改变图片大小
- java改变图片的大小
- Java 改变图片大小
- JAVA改变上传图片大小
- java 等比例 改变图片的质量(等大小压缩图片)