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
    评论
### 回答1: 可以通过设置groupBox的样式表(StyleSheet)来取消边框。具体操作如下: 1. 在Qt DesignergroupBox控件。 2. 在右侧属性栏找到样式表(StyleSheet)属性,并点击旁边的编辑按钮。 3. 在样式表编辑器添加以下代码: ``` QGroupBox { border: none; } ``` 4. 点击确定按钮保存样式表,然后预览效果。 现在groupBox控件应该没有边框了。 ### 回答2: groupBox 是一个用于包含其他控件的容器控件,在 Windows Forms 常用于创建和管理用户界面。groupBox 控件通常具有边框,用于界定该控件的边界。 如果想要取消 groupBox 的边框,可以通过以下步骤实现: 1. 打开 Visual Studio 的窗体设计器,找到包含 groupBox 的窗体。 2. 在窗体设计器该 groupBox 控件。 3. 访问 groupBox 的属性面板,可以通过右键单击 groupBox 控件并选择 "属性" 或者在属性窗口找到该控件。 4. 在属性面板的 "BorderStyle" 属性,将其值设置为 "None",即 "无"。 5. 保存并运行程序,groupBox 的边框将会被取消。 注意事项: - 取消 groupBox 的边框后,该控件的边界将不再可见,因此需要确保 groupBox 的控件布局与界面设计的要求一致。 - 此方法只适用于 Windows Forms 应用程序,若使用其他界面库或技术,可能有不同的实现方式。 取消 groupBox 边框可以使界面看起来更加简洁和统一,根据具体的界面设计要求,可以根据需要选择是否取消 groupBox 的边框。 ### 回答3: groupBox(组框)是一种用于界面设计的控件,常用于将相关的控件集合在一起,以便以一种有组织的方式呈现给用户。通常,groupBox会自动包含一个边框,以突出显示其边界。然而,在某些情况下,我们可能需要取消groupBox的边框。 要取消groupBox的边框,可以采取以下步骤: 1. 打开界面设计器,确保groupBox已选。 2. 在属性窗口找到"BorderStyle"(边框样式)属性。 3. 将"BorderStyle"属性的值设置为"None"(无)。 通过设置边框样式为"None",groupBox的边框将被隐藏起来,从而达到取消边框的效果。 在某些情况下,取消groupBox的边框可能有助于提升界面的美观性和用户体验。例如,当groupBox的内部控件与背景色相同或与其它元素紧密排列时,取消边框可以使整个界面看起来更加一体化和流畅。 总之,取消groupBox的边框只需要简单地设置边框样式属性为"None"。这样,我们就可以根据需要定制和调整groupBox的外观来实现更好的界面效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值