📄 picturebox.java
字号:
package com.ciash.common.gui;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Dimension;
import java.io.File;
import java.awt.Toolkit;
import javax.swing.ImageIcon;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JViewport;
import java.awt.Rectangle;
import java.awt.Point;
/**
* 图片控件
*/
public class PictureBox
extends JScrollPane {
private Canvas canvas = new Canvas();
public PictureBox() {
setViewportView(canvas);
setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
}
public PictureBox(Image image) {
setImage(image);
}
public void setImage(Image image) {
canvas.setImage(image);
setViewportView(canvas);
//调用setViewportView重置JViewport
//后期新建对象进行优化
paintImmediately(getBounds());
//立即更新容器
}
public void setImage(String path) {
Toolkit tool = Toolkit.getDefaultToolkit();
Image img = new ImageIcon(path).getImage();
setImage(img);
}
public Image getImage() {
return canvas.getImage();
}
public class Canvas
extends JPanel {
private Image image;
public Image getImage() {
return image;
}
public void setImage(Image image) {
this.image = image;
}
public void paint(Graphics g) {
Dimension size = getSize();
resizePreferenceSize(image, size);
g.setColor(getBackground());
g.fillRect(0, 0, getSize().width, getSize().height);
drawImage(g, size);
}
private void drawImage(Graphics g,Dimension size) {
if (image != null) {
g.drawImage(image, 0, 0, size.width, size.height, null);
}
}
private void resizePreferenceSize(Image image, Dimension size) {
if (image != null) {
size.width = image.getWidth(null);
size.height = image.getHeight(null);
setPreferredSize(size);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -