关闭

[java]④自定义按钮 应用在JFrame窗体

标签: javastringJPanelclass背景图片
59人阅读 评论(0) 收藏 举报
分类:

这个方法适合一个项目需要大量的按钮操作。

用3个类 CustomButton类自定义按钮、MinButton(局部)类用来调用按钮、然后在OneWindow类应用按钮

我把调用按钮类都放进一个包里,方便以后需要按钮就往里面编写就可以。

1、CustomButton类

import java.awt.Cursor;

import javax.swing.*;

public class CustomButton {
	public ImageIcon icon[] = new ImageIcon[3]; // 图片组 存放三个图标--平时、经过、按下
	public JButton button; // 定义一个按钮类 公共修饰允许被其他类访问
	public String name; // 按钮图片名称

	private void mouse() { // 设置鼠标经过这个按钮的图标
		button.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
	}

	private void design() { // 主方法
		for (int i = 0; i < 3; i++) {
			icon[i] = new ImageIcon("Image/icon/" + name + i + ".png");
		}
		button.setBorderPainted(false);// 取消按钮边框
		button.setFocusPainted(false);// 取消焦点状态
		button.setContentAreaFilled(false);// 设置按钮为透明
		button.setDoubleBuffered(false);// 取消双缓冲区进行缓冲
		button.setOpaque(false);// 设置边界处透明
		button.setFocusable(false);// 取消获得焦点

		button.setIcon(icon[0]);// 经过图标
		button.setRolloverIcon(icon[1]);// 成为焦点图标
		button.setPressedIcon(icon[2]);// 按下图标
	}

	public CustomButton(JButton tempButton, String name) {
		this.button = tempButton;
		this.name = name;
		design();
		mouse();
	}
}

2、MinButton(局部)类

import javax.swing.*;
import myButtonClass.CustomButton;


//窗体最小化
public class MinButton extends JButton {
	private static final long serialVersionUID = 1L;
	public JButton min;
      public MinButton(){
    	  min=new CustomButton(this,"min").button; //调用按钮
      }
}
3、OneWindow类

import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import buttonGroup.*;

public class OneWindow extends JFrame implements ItemListener {

	private static final long serialVersionUID = 1L;

	Point pressedPoint;

	public OneWindow() {
		this.setUndecorated(true);// 取消窗体修饰效果
		this.getContentPane().setLayout(null);// 窗体使用绝对布局
		this.setLocationRelativeTo(null);// 窗体居中
		this.setAlwaysOnTop(true); // 窗体最顶层显示
		
		ImageIcon logo = new ImageIcon("Image/logo01.jpg");
        this.setIconImage(logo.getImage());//更改logo		

		JLabel lab = new JLabel(); // 使用便签存放背景图片
		ImageIcon icon = new ImageIcon("Image/05.png");
		lab.setIcon(icon);
		lab.setBounds(0, -50, 600, 600);
		this.getContentPane().add(lab);// 加载进窗体

		MinButton min = new MinButton(); // 最小化按钮
		min.setBounds(480, 10, 30, 30);
		this.getContentPane().add(min);
		min.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				setExtendedState(JFrame.ICONIFIED);// 窗体最小化
			}
		});

		MaxButton max = new MaxButton(); // 最大化按钮
		max.setBounds(520, 10, 30, 30);
		this.getContentPane().add(max);
		max.addItemListener(this);

		WCloseButton wclose = new WCloseButton(); // 关闭窗口按钮
		wclose.setBounds(560, 10, 30, 30);
		this.getContentPane().add(wclose);
		wclose.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});

		this.addMouseListener(new MouseAdapter() {
			public void mousePressed(MouseEvent e) { // 鼠标按下事件
				pressedPoint = e.getPoint(); // 记录鼠标坐标
			}
		});
		this.addMouseMotionListener(new MouseMotionAdapter() {
			public void mouseDragged(MouseEvent e) { // 鼠标拖拽事件
				Point point = e.getPoint();// 获取当前坐标
				Point locationPoint = getLocation();// 获取窗体坐标
				int x = locationPoint.x + point.x - pressedPoint.x;// 计算移动后的新坐标
				int y = locationPoint.y + point.y - pressedPoint.y;
				setLocation(x, y);// 改变窗体位置
			}
		});

		this.setTitle("自定义窗体");
		this.setBounds(100, 100, 600, 500);
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	public void itemStateChanged(ItemEvent e) {
		if (e.getStateChange() == ItemEvent.SELECTED) {
			setExtendedState(JFrame.MAXIMIZED_BOTH);// 最大化窗体
		} else {
			setExtendedState(JFrame.NORMAL);// 恢复普通窗体状态
		}
	}

	public static void main(String[] args) {
		new OneWindow();
	}
}


效果图:


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:415次
    • 积分:60
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档