Swing组件最大化最小化按钮实现

本文介绍如何自定义Java Swing中的JFrame窗口,包括去除默认边框、添加并美化最小化、最大化及关闭按钮的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在做JFrame窗口的时候为了将边框弄得更加美观,所以需要去掉默认的边框.然后在窗体上加上最大最小化与关闭按钮.(代码中ChatUI为类名)

 

主要方法:setExtendedState();

 

第一步:去掉JAVA边框

this.setUndecorated(true);

 

第二步:增加JButton按钮.

 

closeT = new JButton(new ImageIcon(
				"images\\chat\\sysbtn_close_normal.png"));
		closeT.setBounds(64, 0, 26, 19);
		threeButton.add(closeT);
		closeT.setActionCommand("关闭");
//不显示按钮的边框
		closeT.setBorderPainted(false);
//增加动作监听器
		closeT.addActionListener(lis);
//不可设为焦点
		closeT.setFocusable(false);
//透明
		closeT.setContentAreaFilled(false);
//增加鼠标监听器,当鼠标移到相应位置替换图片实现变色效果
//这里为了方便展示思路每次都new了一个ImageIcon.
		closeT.addMouseListener(new MouseAdapter() {

			public void mouseEntered(MouseEvent e) {
				closeT.setIcon(new ImageIcon(
						"images\\chat\\sysbtn_close_hover.png"));
			}

			public void mouseExited(MouseEvent e) {
				closeT.setIcon(new ImageIcon(
						"images\\chat\\sysbtn_close_normal.png"));
			}

			public void mousePressed(MouseEvent e) {
				closeT.setIcon(new ImageIcon(
						"images\\chat\\sysbtn_close_down.png"));
			}

		});

 

最小化类似.最大化有点特别,这与系统提供的最小化最大化方法有关.

 

第三步,增加的动作监听器里面实现其功能

isMax为标记当前是不是最大化窗口,最大化的时候点击该按钮需要还原成正常窗口.

 

                       if (source.equals("关闭")) {
				ChatUI.this.dispose();//不退出程序
			} else if (source.equals("最小化")) {
				ChatUI.this.setExtendedState(ICONIFIED);
			} else if (source.equals("最大化")) {
				if (!isMax) {
					ChatUI.this.setExtendedState(MAXIMIZED_BOTH);
					isMax = true;
				} else {
					ChatUI.this.setExtendedState(NORMAL);
					isMax = false;
				}
			}

 

 

因为最大化之后最小化,再调出窗口之后,窗口将恢复成正常窗口大小.所以在最大化这里需要加个判断,如果本来不是最大化窗口,直接正常弹出.否则,弹出后再设置为最大化窗口.

这个实现需要在窗口上加上一个窗口监听器.具体实现如下:

 


               this.addWindowListener(new WindowAdapter() {
			public void windowActivated(WindowEvent e) {
				if (isMax) {
					ChatUI.this.setExtendedState(MAXIMIZED_BOTH);
				}
			}
		});

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值