当我们消掉界面边框之后,就不能再移动界面了,当然只要加上监听器,就可以了。下面便是详细的实现。(备注:这不是我写代码的习惯或者说是风格,关于监听器我习惯放在一个新类中,但是为了方便各位的运行,所有的代码我放在了一个类中)
关于移动位置的计算是:拖动时当前的坐标减去鼠标按下去时的坐标,就是界面所要移动的向量。
下面是代码:
package qqproject.clientUIv_02;
import java.awt.Cursor;
import java.awt.Point;
import javax.swing.JFrame;
/**
* 程序启动的入口
*
* @author Administrator
*
*/
public class LoginUI extends JFrame {
private boolean isMoved;
private Point pre_point;
private Point end_point;
public static void main(String args[]) {
final LoginUI lui = new LoginUI();
lui.showUI();
}
// 构造函数
public LoginUI() {
this.setSize(300, 370);
this.setLocationRelativeTo(null);
this.setUndecorated(true);// 去掉窗口的边框
}
// 显示窗口的函数
public void showUI() {
this.setVisible(true);
this.setDragable(this);
}
// 为窗口加上监听器,使得窗口可以被拖动
private void setDragable(final LoginUI lui) {
this.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent e) {
isMoved = false;// 鼠标释放了以后,是不能再拖拽的了
lui.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
public void mousePressed(java.awt.event.MouseEvent e) {
isMoved = true;
pre_point = new Point(e.getX(), e.getY());// 得到按下去的位置
lui.setCursor(new Cursor(Cursor.MOVE_CURSOR));
}
});
//拖动时当前的坐标减去鼠标按下去时的坐标,就是界面所要移动的向量。
this.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseDragged(java.awt.event.MouseEvent e) {
if (isMoved) {// 判断是否可以拖拽
end_point = new Point(lui.getLocation().x + e.getX() - pre_point.x,
lui.getLocation().y + e.getY() - pre_point.y);
lui.setLocation(end_point);
}
}
});
}
}
<!--EndFragment-->
分享到:
相关推荐
- 想要去掉边框,就需要对窗口的样式进行修改,这通常涉及到操作系统的API调用。 - 在Windows环境下,可以使用Win32 API来进行这样的调整。 3. **使用C#调用Win32 API:** - Unity支持C#脚本语言,可以通过C#来...
在Qt编程中,有时我们需要创建一个无边框的窗口,以实现更加自定义的界面设计。无边框窗口可以提供更灵活的布局和外观,但同时也需要我们手动添加常见的窗口操作,如最大化、最小化、关闭按钮以及窗口的移动和大小...
# pyside2无边框窗口可拖动拉伸边框缩放调节窗口大小 1. 1. 去除系统自带边框,自定义美观ui; 2. 窗口可随意拖动; 3. 最小化、最大化、关闭按钮; 4. 双击标题栏最大化/还原窗口; 5. 最大化状态下拖动窗口还原; ...
QMainWindow通过setWindowFlags(Qt::FramelessWindowHint)该函数隐藏掉标题栏以后,就...因为我的界面是new出来的,没有具体的ui界面所以用的是第二种通过nativeEvent()和winEvent()函数实现的,具体实现过程看代码
Qt库提供了一种灵活的方式来实现这种效果,即使在没有默认窗口装饰(如标题栏和边框)的情况下,依然能够允许用户自由移动和调整窗口尺寸。以下是对"Qt 5.11 无边框可拖动可改变大小窗口"这一主题的详细说明: 首先...
在本文中,我们将深入探讨如何使用Qt框架创建一个无边框、带有阴影、圆角、可拖动且具有最大化、最小化和关闭按钮的美观用户界面(UI)窗口。Qt是一个跨平台的应用程序开发框架,广泛应用于桌面和移动平台,提供丰富...
为了去掉窗口边框,我们在构造函数中添加`Qt.FramelessWindowHint`标志: ```python super(QUnFrameWindow, self).__init__(None, Qt.FramelessWindowHint) ``` 接着,我们需要自定义标题栏。在这个例子中,我们...
本知识点将深入探讨如何使用MFC来实现一个可拖动的按钮,即`CMovableButton`,该按钮允许用户在父窗口内自由移动,但不能拖出父窗口范围。 首先,我们需要创建一个派生自`CButton`类的新类`CMovableButton`。`...
在Windows Forms(Winform)开发中,有时候我们可能需要创建一个没有系统默认边框的窗体,例如,设计一个更加自定义化的用户界面。...通过这样的方式,我们可以创建出更具个性化的用户界面,同时保持窗体的可移动性。
- 在窗体的构造函数或者Load事件处理程序中,可以设置`FormBorderStyle`属性为`None`,以去掉边框和标题栏。例如: ```csharp this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; ``` 2. **...
在Qt框架中,创建一个无边框且无标题栏但仍然可以被拖动的窗口是一项常见的需求,这通常用于自定义界面设计或者实现特定的窗口交互效果。标题中的"qt 无边框无标题栏可拖动窗口的实现"正是讨论这个主题。下面将详细...
但是,为了实现更加自定义的界面设计,开发者可能会选择移除这些边框。在`FormBorderStyle`属性设置为`None`时,窗体将失去默认的边框。 **无边框窗体的拖动:** 在无边框窗体上实现拖动功能,通常需要重写窗体的`...
CSplitterWnd是Microsoft Visual C++ MFC库中的一个关键组件,它允许开发者在应用程序中创建可分割的窗口,使得用户可以方便地在一个界面中同时查看和操作多个相关的数据视图。这个技术主要应用于那些需要多面板显示...
frame: false // 这里去掉默认边框 }) ``` 实现窗口操作: 无边框窗口需要我们手动实现窗口操作,例如最小化、最大化和关闭。这可以通过监听`mousedown`事件并使用`win`对象的方法来完成。以下是一个简单的例子:...
在QML中,可以通过设置`Window`或`ApplicationWindow`组件的`borderless`属性为`true`来去掉窗口的边框。这样可以自定义窗口的外观,创建出更加独特的界面设计。 ```qml import QtQuick 2.0 Window { id: ...
这个功能尤其适用于那些希望为用户界面提供更现代、更吸引人外观的应用程序。在Windows 7及更高版本的系统上,操作系统自带了窗体阴影效果,但在旧版系统中,我们则需要通过代码来模拟这种效果。 首先,让我们了解...
// 去掉边框 ``` 此外,还可以通过资源编辑器(Resource Editor)在界面上直接设计按钮的外观,包括背景色、前景色、按下状态等。在资源编辑器中,可以预览并修改按钮控件的各种属性,如ID、文本、图片等。 在...
其次,“去掉边框”通常指的是去除控件的默认边框,这可以通过设置QSS中的`border-style: none;`来实现。这可以使界面看起来更加简洁和现代。此外,QT还允许自定义边框,例如添加圆角、渐变色边框等,以增强视觉效果...
无论在Windows Forms还是WPF中,去除标题栏后,为了保持窗口的可移动性,你可能还需要实现拖动窗口的功能。这通常通过捕获鼠标事件并在鼠标移动时更新窗体位置来实现。 在源代码中,你可能会看到类似以下的代码片段...
9. **无边框窗口**:QT的QWindow或QMainWindow类可以设置窗口风格,去掉边框和标题栏,实现全屏或自定义风格的窗口界面。 10. **跨平台**:QT的跨平台特性使得这个PDF阅读器可以在多种操作系统上运行,只需一次编写...