📄 myviewport.java
字号:
package flow.graph.test;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.TexturePaint;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.JComponent;
import javax.swing.JViewport;
public class MyViewPort extends JViewport {//继承JViewPort
BufferedImage fgimage, bgimage; //背景图片和前景图片
TexturePaint texture; //纹理图案 跟Color是同类的他们实现共同接口
//**********************从外部传入前景和背景的URL***************************************************************
public void setBackgroundTexture(URL url) throws IOException {
bgimage = ImageIO.read(url);
Rectangle rect = new Rectangle(0,0,
bgimage.getWidth(null),bgimage.getHeight(null));
texture = new TexturePaint(bgimage, rect);
}
public void setForegroundBadge(URL url) throws IOException {
fgimage = ImageIO.read(url);
}
//**********************从外部传入前景和背景的URL***************************************************************
public void paintComponent(Graphics g) {
// 先调用父类的这个paintComponent方法 额外画出背景图片,背景图用纹理处理
super.paintComponent(g);
// 用纹理填充
if(texture != null) {
Graphics2D g2 = (Graphics2D)g;
g2.setPaint(texture);
g.fillRect(0,0,getWidth(),getHeight());
}
}
public void paintChildren(Graphics g) {
super.paintChildren(g);
if(fgimage != null) {
g.drawImage(fgimage,
getWidth()-fgimage.getWidth(null), 0, null);//前景图片的绘制
}
}
public void setView(JComponent view) {
view.setOpaque(false);//关键步骤 这样才能看见背景图片
super.setView(view);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -