📄 superpane.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 + -