⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.java

📁 《Java2图形设计卷II:Swing》配套光盘源码
💻 JAVA
字号:
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class Test extends JApplet {
	DefaultBoundedRangeModel model =
			new DefaultBoundedRangeModel(100,0,0,100);

	JSlider slider = new JSlider(model);
	JLabel readOut = new JLabel("100%");

	ImageIcon image = new ImageIcon("shortcake.jpg");
	ImageView imageView = new ImageView(image, model);

	public void init() {
		Container contentPane = getContentPane();
		JPanel panel = new JPanel();

		panel.add(new JLabel("Set Image Size:"));
		panel.add(slider);
		panel.add(readOut);

		contentPane.add(panel, BorderLayout.NORTH);
		contentPane.add(imageView, BorderLayout.CENTER);

		model.addChangeListener(new ReadOutSynchronizer());
	}
	class ReadOutSynchronizer implements ChangeListener {
		public void stateChanged(ChangeEvent e) {
			String s = Integer.toString(model.getValue());
			readOut.setText(s + "%");
			readOut.revalidate();
		}
	}
}
class ImageView extends JScrollPane {
	JPanel panel = new JPanel();
	Dimension originalSize = new Dimension();
	Image originalImage;
	ImageIcon icon;

	public ImageView(ImageIcon icon, BoundedRangeModel model) {
		panel.setLayout(new BorderLayout());
		panel.add(new JLabel(icon));

		this.icon = icon;
		this.originalImage = icon.getImage();

		setViewportView(panel);
		model.addChangeListener(new ModelListener());

		originalSize.width = icon.getIconWidth();
		originalSize.height = icon.getIconHeight();
	}
	class ModelListener implements ChangeListener {
		public void stateChanged(ChangeEvent e) {
			BoundedRangeModel model = 
							 (BoundedRangeModel)e.getSource();

			if( ! model.getValueIsAdjusting()) {
				int min = model.getMinimum(), 
					max = model.getMaximum(), 
					span = max - min,
					value = model.getValue();

				double multiplier = (double)value / (double)span;

				multiplier = multiplier == 0.0 ? 
							 0.01 : multiplier;
				
				Image scaled = originalImage.getScaledInstance(
					(int)(originalSize.width * multiplier),
					(int)(originalSize.height * multiplier),
					Image.SCALE_FAST);

				icon.setImage(scaled);
				panel.revalidate();
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -