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

📄 superpane.java

📁 时空图计算和编辑程序
💻 JAVA
字号:
package super_cpt;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.RoundRectangle2D;
import java.awt.image.BufferedImage;

import my_cpt.IActionExcutor;
public class SuperPane extends Panel{

	/**
	 * 超级面板
	 */
	//背景图像
	protected IActionExcutor iexcuter=null; 
	public BufferedImage backimage;
	private String title="Panel";
	//private Point mousepnt=new Point();
	private int my=0;
	public BufferedImage offImage;
	public Graphics2D g2;
	public static final int VERTICAL=1;
	public static final int HORIZENAL=2;
	public int Direction=2;
	public int HidenSide=1;
	public final static int LEFT=0;//左边
	public final static int RIGHT=1;//右边
	public final static int BUTTOM=2;//底部
	public final static int TOP=3;//顶部
	private Shape clshape;//关闭按钮
	private boolean pressed=false;//是否按下
	public SuperPane(String str)
	{//构造
		title=str;
		this.addMouseListener(new MouseAdapter(){
			public void mousePressed(MouseEvent e)
			{
				switch(Direction){
				case HORIZENAL:
					my=e.getY();
					break;
				case VERTICAL:
					my=e.getX();
					break;	
				}
				if(clshape.contains(e.getX(),e.getY()))
				{
					pressed=true;
					repaint(0,0,getWidth(),20);
				}
			}
			public void mouseReleased(MouseEvent e)
			{
				if(e.getButton()!=MouseEvent.BUTTON1)return;
				pressed=false;
				repaint(0,0,getWidth(),20);
				//System.out.println(iexcuter);
				if(clshape.contains(e.getX(),e.getY()) && iexcuter!=null)
				{
					//System.out.println("l");
					myConfirm();
				}
			}
			
		});
		this.addMouseMotionListener(new MouseMotionAdapter(){
			public void mouseDragged(MouseEvent e)
			{
				switch(Direction){
				case HORIZENAL:
					setLocation(getX(),getY()+e.getY()-my);
					break;
				case VERTICAL:
					setLocation(getX()+e.getX()-my,getY());
					break;	
				}
				
				//my=e.getY();
			}
		});
	}
	private void myConfirm()
	{//确定
	//	System.out.println("test");
		iexcuter.Confirm(this,HidenSide,false);
	}
	public String getTitle(){return title;}
	public void setExecutor(IActionExcutor e)
	{//添加执行者
		iexcuter=e;
	}
	public void myPaint(Graphics2D g)
	{//重写自己的绘图方法
		
	}
	public void initBackImage()
	{//初始化背景图像
		backimage=this.getGraphicsConfiguration().createCompatibleImage(getWidth(),getHeight());
		Graphics2D g2=backimage.createGraphics();
		g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
		//填充背景
		g2.setColor(Color.WHITE);
		g2.fillRect(0,0,getWidth(),getHeight());
		//填充渐变
		Color midcolor=new Color(210,210,210);
		GradientPaint paint=new GradientPaint(0,0,midcolor,0,10,Color.WHITE);
		g2.setPaint(paint);
		g2.fillRect(0,0,getWidth(),10);
		paint=new GradientPaint(0,10,Color.WHITE,0,20,midcolor);
		g2.setPaint(paint);
		g2.fillRect(0,10,getWidth(),8);
		//绘制边框
		paint=new GradientPaint(0,0,Color.BLUE,0,10,midcolor);
		g2.setPaint(paint);
		g2.fillRect(0,0,4,10);
		//g2.fillRect(getWidth()-4,0,4,10);
		paint=new GradientPaint(0,10,midcolor,0,20,Color.BLUE);
		g2.setPaint(paint);
		g2.fillRect(0,10,4,8);
		//g2.fillRect(getWidth()-4,10,4,8);
		g2.fillRect(0,8,4,getHeight()-8);
		//g2.fillRect(getWidth()-4,8,4,getHeight()-8);
		//绘制外框
		g2.setColor(Color.GRAY);
		//g2.drawLine(0,15,getWidth(),15);
		g2.drawRect(0,0,getWidth()-1,getHeight()-1);
		//g2.setColor(Color.GRAY.darker());
		
		g2.dispose();
		clshape=new RoundRectangle2D.Float(getWidth()-19,3,12,12,8,8);
	}
	private final static Color pressedColor=Color.GRAY,pressColor=Color.RED;
	public void update(Graphics g)
	{
		int w=getWidth(),h=getHeight();
		if(offImage==null || g2==null)
		{
			offImage=this.getGraphicsConfiguration().createCompatibleImage(w,h);
			g2=offImage.createGraphics();
			g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
			g2.setFont(new Font(g2.getFont().getFontName(),Font.PLAIN,13));
		}
		if(backimage==null)initBackImage();
		g2.drawImage(backimage,0,0,this);
		
		if(pressed){
			g2.setColor(pressedColor);
			g2.fill(clshape);
		}
		else{
			g2.setColor(pressColor);
			g2.fill(clshape);
		}
		g2.setColor(Color.BLACK);
		g2.drawString(title,6,14);
		myPaint(g2);
		paint(g);
	}
	public void paint(Graphics g)
	{
		if(offImage==null)
		{
			repaint();
		}
		g.drawImage(offImage,0,0,this);
		super.paint(g);
	}
	public static void main(String[] args) {
		// TODO 自动生成方法存根

	}

}

⌨️ 快捷键说明

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