Java程序中取消窗口标题栏以及边框,并使窗口可以相应鼠标事件,被鼠标拖动;设置JFrame背景色

我们在编程的时候,如果嫌窗口自己的边框以及标题栏难看,我们可以取消它。

1、取消边框以及标题栏:

调用函数setUndecorated(true);即可

 

在我们取消窗口的边框以及标题栏以后,窗口就无法响应鼠标的点击事件了,也就无法被鼠标拖动而改变其在桌面上的位置了。那么我们需要如下做:

2、使取消了边框以及标题栏窗口能够响应鼠标事件:

创建如下一个类来辅助完成此项工作:

public class MobileNoBorderFrameTool {
	
	private Point OriginalPoint=null,MobileDistance=null;		//鼠标移动前的位置和鼠标移动的距离
	private boolean isDraging = false;		//用与判断鼠标书否松开
	
	public MobileNoBorderFrameTool(Component frame){
		super();
		
		OriginalPoint=new Point();		//鼠标移动前的位置
		MobileDistance=new Point();		//鼠标移动的距离
		
		/*确保取消标题栏以及边框以后,窗口仍然能接受鼠标点击事件*/
		frame.addMouseListener(new MouseAdapter() {		//按下鼠标时触发的动作
			public void mousePressed(MouseEvent e) {
				isDraging = true;
			    OriginalPoint.x = e.getX();		//获取鼠标移动前的位置
			    OriginalPoint.y = e.getY();
			    
			    System.out.println("悬浮窗FloatingWindow或者常规窗口ConventionalWindow上的鼠标已按下...");
			    
			   }

			public void mouseReleased(MouseEvent e) {		//松开鼠标触发的事件
			    isDraging = false;
			    
			    System.out.println("悬浮窗FloatingWindow或者常规窗口ConventionalWindow上的鼠标已松开");
			    
			   }
			  });
		
		frame.addMouseMotionListener(new MouseMotionAdapter() {		//鼠标移动时的动作
			public void mouseDragged(MouseEvent e) {
			    if (isDraging) {
			    	
			    	System.out.println("鼠标移动的距离:X轴为"+MobileDistance.x +"\tY轴为"+MobileDistance.y);
			    	
			    	MobileDistance= frame.getLocation();		//获取鼠标移动距离
			    	/*重新绘制位置*/
			    	frame.setLocation(MobileDistance.x + e.getX() - OriginalPoint.x, MobileDistance.y + e.getY() - OriginalPoint.y);
			    	} 
			    }
			});
		}
	
}


然后我们可以编写一个类,继承自JFrame,然后在该类的定义中,在构造函数中将该类当做参数,传入以上类的对象中即可。代码如下:

<strong><span style="font-size:24px;">public class ConventionalWindow extends JFrame {
	
	/**
	 * 此类是软件运行时的常规窗口类
	 */
	private static final long serialVersionUID = 1L;		//版本号
	private Color conventionalWindow_Frame_Color=null;		//用于设置面板背景颜色的颜色对象
	
	public ConventionalWindow(){
		super();
		
		conventionalWindow_Frame_Color=new Color(160,217,250);		//窗口背景色
		
		this.getContentPane().setBackground(conventionalWindow_Frame_Color);		//设置窗口背景色
	}
	
}</span></strong>


然后,再用ConventionalWindow去创建窗口对象,就可以实现取消了标题栏和边框,并且可以被鼠标拖动的窗口。

 

3、我们有时需要改变窗口JFrame的背景色,我们可以调用函数:

getContentPane().setBackground(new Color(160,217,250));


 

4、如果我们需要弹出窗口,但是不需要其在任务栏显示图标,我们不必用JFrame,我们可以用JWindow。

 

 

以上内皆为本人请自验证。


如有疑问,请发送邮件至1993wbb@sina.cn或者加QQ群274313939寻求解答

 

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值