打造酷炫风格的Swing界面(2)

2024-04-27 10:58

本文主要是介绍打造酷炫风格的Swing界面(2),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在上一篇文章中,我们定制了不能拖放界面大小的窗口,但是很多时候,我们都必须能够实现窗口拖拉,但是图片的大小已经固定了,怎么办了?


 

能拖拉的窗口大小

 

在播放器的歌词窗口的窗口时可以拖拉大小的,如图1:

 

图1 拖拉的歌词窗口:

 


 

 

打造能拖拉的定制窗口

 

首先,我们应该想到无论窗口怎么拖拉大小,起四周的四个角的大小是不会变化的,我们把四个角的图片以窗口大小为变量定位在窗口的四个位置,图片素材如下图2;

 

图2:四个角的素材

    

 

 

 

在拖拉的过程中,改变大小的分别是四周的边距,我们可以根据窗口的大小来动态的填充四周的边距;图片素材如图3;

 

图3:四边距的素材

 

        

如下一节的文章中那样,我们扩展一个Border,把上面的图片依次的画上去;代码清单如下:

 

代码清单1:

 

 

其实,在处理剩下的那一个不足以将背景图片铺开的空间的时候,我们在图片单一的情况,事实上另一种处理方式是把图片拉伸开来,如下代码:

 

 

只不过这种方式会再拖拉的时候出现空白的不连贯,原因在于在图片渲染的时候,把内存中的同一张图片重复的绘制要比把一张图片拉伸显示的效率要高得多;

 

接下来,我们就是要在这个没有边框渲染的窗口上实现自己的拖拉大小的功能,当鼠标分别放在左上角,顶部,右上角,右边距,右下角,底部,左下角,左边距八个方位的时候,如下图4;

 

图4:八个方向

 

分别显示八个不同的鼠标的拖拉样式,并且在鼠标按下的时候,记录下初始位置和拖拉方向,在鼠标移动的时候改变窗口大小,在鼠标松开的时候复位标志变量;代码清单2是用于计算这个八个矩形;

 

代码清单2,计算八矩形位置:

 

 

  下面是当鼠标分别处于这8个矩形的时候分别应该显示的鼠标样式和记录下来的状态:

 

代码清单3:

 

 

 

 

 

下面则是根据鼠标是否在这个把8个矩形中来设定状态和鼠标样式;

 

代码清单4:

 

 

当鼠标按下的时候:

 

代码清单5:

 

 

当鼠标移动的时候:

 

代码清单6:

 

 

 

当选择了拖拉下面的边框的时候:

 

代码清单7:

 

 

当选择拖拉左边的边框的时候,这个时候必须保证右边的边的位置是固定不变的:

 

 

代码清单8:

 

 


总结

 

利用了角度拉伸不变,而填充被拉伸的空间来实现一个可拉伸的图片背景窗口,我们可以实现很多绚丽的窗口;

这篇关于打造酷炫风格的Swing界面(2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/940316

相关文章

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

一款支持同一个屏幕界面同时播放多个视频的视频播放软件

GridPlayer 是一款基于 VLC 的免费开源跨平台多视频同步播放工具,支持在一块屏幕上同时播放多个视频。其主要功能包括: 多视频播放:用户可以在一个窗口中同时播放任意数量的视频,数量仅受硬件性能限制。支持多种格式和流媒体:GridPlayer 支持所有由 VLC 支持的视频格式以及流媒体 URL(如 m3u8 链接)。自定义网格布局:用户可以配置播放器的网格布局,以适应不同的观看需求。硬

如何打造个性化大学生线上聊天交友系统?Java SpringBoot Vue教程,2025最新设计思路

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 | SpringBoot/SSM Python实战项目 | Django 微信小程序/安卓实战项目 大数据实战项目 ⚡⚡文末获取源码 文章目录

centOS7.0设置默认进入字符界面

刚装的,带有x window桌面,每次都是进的桌面,想改成自动进命令行的。记得以前是修改 /etc/inittab 但是这个版本inittab里的内容不一样了没有id:x:initdefault这一行而且我手动加上也不管用,这个centos 7下 /etc/inittab 的内容 Targets systemd uses targets which serve a simil

在 Qt Creator 中,输入 /** 并按下Enter可以自动生成 Doxygen 风格的注释

在 Qt Creator 中,当你输入 /** 时,确实会自动补全标准的 Doxygen 风格注释。这是因为 Qt Creator 支持 Doxygen 以及类似的文档注释风格,并且提供了代码自动补全功能。 以下是如何在 Qt Creator 中使用和显示这些注释标记的步骤: 1. 自动补全 Doxygen 风格注释 在 Qt Creator 中,你可以这样操作: 在你的代码中,将光标放在

一个图形引擎的画面风格是由那些因素(技术)决定的?

可能很多人第一直覺會認為shader決定了視覺風格,但我認為可以從多個方面去考慮。 1. 幾何模型 一個畫面由多個成分組成,最基本的應該是其結構,在圖形學中通常稱為幾何模型。 一些引擎,如Quake/UE,有比較強的Brush建模功能(或應稱作CSG),製作建築比較方便。而CE則有較強的大型地表、植被、水體等功能,做室外自然環境十分出色。而另一些遊戲類型專用的引擎,例

Appium--界面元素选择

在操作界面元素前,我们需要进行手机与电脑的连接,这里介绍一个adb无线连接的方法: Adb无线连接功能 无线连接步骤(确保手机和电脑处于同一局域网) 1先以USB有线连接方式连接到计算机 2激活手机adb的无线服务: 命令行输入adb tcpip 5555(5555是端口号) 3计算机以无线方式连接到手机: 命令行输入adb connect 配置信息 desired_caps:这些键值对告诉ap