我们在编程的时候,如果嫌窗口自己的边框以及标题栏难看,我们可以取消它。
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寻求解答