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

📄 myviewport.java

📁 JGraph扩展应用。自定义Renderer,自定义视图View实现自定义工作流控件
💻 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 + -