import javax.swing.*;
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.BoxLayout;
import javax.swing.tree.TreePath;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.*;
import javax.swing.event.*;
import java.awt.event.*;
public class Anniu extends JFrame {
//private static final long serialVersionUID = 1L;
private JLabel label = null;
private ImageIcon zp;
// private ZoomPanel zp;
//
public Anniu() {
JFrame frame=new JFrame();
frame.setSize(800, 600);
frame.setLayout(null);
zp = new ImageIcon("hy.jpg");
label = new JLabel(zp);
label.setBounds(100, 100, 400, 400);
frame.add(label);
addMouseWheelListener(new MouseWheelListener(){
public void mouseWheelMoved(MouseWheelEvent e){
//滚轮向前滑动 放大
if(e.getWheelRotation() < 0){
//label.enlargeImg();
}
//滚轮向后滑动 缩小
else{
// label.reduceImg();
}
}
});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(String[] args){
new Anniu();
}
class ZoomPanel extends JPanel {
private ImageIcon ii;
private Dimension frameSize;
private int x, y, width, height;//图片的坐标、缩放的size
public ZoomPanel(Dimension fs, String imgPath) {
setBackground(Color.WHITE);
this.frameSize = fs;
ii = new ImageIcon(imgPath);
width = ii.getIconWidth();
height = ii.getIconHeight();
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);
}
}
}
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.BoxLayout;
import javax.swing.tree.TreePath;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.*;
import javax.swing.event.*;
import java.awt.event.*;
public class Anniu extends JFrame {
//private static final long serialVersionUID = 1L;
private JLabel label = null;
private ImageIcon zp;
// private ZoomPanel zp;
//
public Anniu() {
JFrame frame=new JFrame();
frame.setSize(800, 600);
frame.setLayout(null);
zp = new ImageIcon("hy.jpg");
label = new JLabel(zp);
label.setBounds(100, 100, 400, 400);
frame.add(label);
addMouseWheelListener(new MouseWheelListener(){
public void mouseWheelMoved(MouseWheelEvent e){
//滚轮向前滑动 放大
if(e.getWheelRotation() < 0){
//label.enlargeImg();
}
//滚轮向后滑动 缩小
else{
// label.reduceImg();
}
}
});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(String[] args){
new Anniu();
}
class ZoomPanel extends JPanel {
private ImageIcon ii;
private Dimension frameSize;
private int x, y, width, height;//图片的坐标、缩放的size
public ZoomPanel(Dimension fs, String imgPath) {
setBackground(Color.WHITE);
this.frameSize = fs;
ii = new ImageIcon(imgPath);
width = ii.getIconWidth();
height = ii.getIconHeight();
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);
}
}
}