2014-11-29 19:16:04|?次阅读|上传:wustguangh【已有?条评论】发表评论
关键词:Java, Swing, 界面设计|来源:唯设编程网
不同操作系统通常会有不同的标题栏和关闭按钮风格,为了保证我们的程序在各操作系统显示风格保持一致,有时候我们需要隐藏窗体的标题栏和边框,这可以使用Frame的成员函数setUndecorated实现。没有标题栏的窗体默认不支持鼠标拖动移动窗体,这就需要我们针对窗体添加对应的监听器。通常包含一个鼠标监听器(MouseListener)和一个鼠标移动监听器(MouseMotionListener),下面是一个实例:
package Test; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class TestFrameDemo { // 全局的位置变量,用于表示鼠标在窗口上的位置 static Point origin = new Point(); static JFrame myFrame = new JFrame(); public static void main(String[] args) { myFrame.setUndecorated(true); myFrame.setSize(600, 400); myFrame.setVisible(true); myFrame.addMouseListener(new MouseAdapter() { // 按下(mousePressed // 不是点击,而是鼠标被按下没有抬起) public void mousePressed(MouseEvent e) { // 当鼠标按下的时候获得窗口当前的位置 origin.x = e.getX(); origin.y = e.getY(); } }); myFrame.addMouseMotionListener(new MouseMotionAdapter() { // 拖动(mouseDragged // 指的不是鼠标在窗口中移动,而是用鼠标拖动) public void mouseDragged(MouseEvent e) { // 当鼠标拖动时获取窗口当前位置 Point p = myFrame.getLocation(); // 设置窗口的位置 // 窗口当前的位置 + 鼠标当前在窗口的位置 - 鼠标按下的时候在窗口的位置 myFrame.setLocation(p.x + e.getX() - origin.x, p.y + e.getY() - origin.y); } }); } }
这个例子创建了一个窗体,首先使用setUndecorated函数隐藏窗体的边框和标题栏,并且将窗体的宽度设置为600px,窗体的高度设置为400px,添加了两个鼠标监听器,一个监控鼠标按下操作,另一个监控鼠标移动操作。