Merlin的魔力: 另一个简单的Frame[Java编程]
本文“Merlin的魔力: 另一个简单的Frame[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在阅读 J2SE 平台最新发行版的加强功效时,您会当即注意到 Sun 终究还是听取了我们的倡议.我并非要表示从前他们根本不听我们的倡议,但他们好象把注意力更多地放在增添大规模的 API 上,而不是修补那些已经投入利用几年的 API 上.比方 AWT Frame 类.固然 Sun 在版本 1.2 中增添了通过编程将 Frame 图标化的功效,您仍旧无法躲藏 Title bar 或将 Frame 最大化.固然您可以利用 Window 来避开 Title bar,但一些任务要求的是一个顶级的 Frame 而不是窗口.基本上不会呈现侥幸的情形.
目前,利用 1.4 发行版,您可以通过编程躲藏特定于平台的窗口修饰,如 Title bar,并将 Frame 最大化.这两种功效都是早在 1997 年就被初次提出的.无修饰 Frame 支持的产生是由于在 1997 年春季,Sun 的错误数据库记录了相关错误,错误标识号为 4038769,Frame 缩放支持在 1997 年 8 月被提出,错误标识号为 4071554.我将在本文中阐明若何利用这两种功效.
无修饰的 Frame
利用这两种功效的最简单之处是支持无修饰 Frame.要躲藏 Frame 上的 Title bar,需求将指定 Frame 的 undecorated 属性设为 true .缺省情形下,该值为 false ,当 Frame 显示出来后,您就无法更改此设置(假如您尝试更改的话,系统会抛出一个 IllegalComponentStateException 非常).
清单 1. 成立一个无修饰的 Frame
Frame frame = new Frame();
frame.setUndecorated(true);
由于 Title bar 和别的的窗口修饰目前都已被躲藏,您无法依靠底层窗口管理系统供应对拖曳 Frame 的支持.您必须自己用一对鼠标侦听器来增添该支持.
清单 2. 增添拖曳支持
// Avoid creating a point with each mousePressed() call
Point origin = new Point();
frame.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
origin.x = e.getX();
origin.y = e.getY();
}
});
frame.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
Point p = frame.getLocation();
frame.setLocation(
p.x + e.getX() - origin.x,
p.y + e.getY() - origin.y);
}
});
以上是“Merlin的魔力: 另一个简单的Frame[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |