
Swing
Java Swing
来自大山深处的Doge_
这个作者很懒,什么都没留下…
展开
-
轻音——基于Swing与JavaFX的音乐播放器
## 简介- **轻音**是一款我个人开发的支持本地和在线音乐的播放器,我制作这款软件的初衷也是为了消除不同平台之间版权的差异,让听歌不再“跨平台化”,实现听歌自由- **使用的技术**:**100% Java** 编程语言,**98% Swing** 开发GUI,**2% JavaFx** 作为播放器引擎- **开发历时**:断断续续也有**一年多**了## 下载地址[https://github.com/IceBearUniverse/LightMusic_release](https://g原创 2022-10-30 20:02:15 · 11543 阅读 · 17 评论 -
Swing mouseDragged事件判断鼠标是哪个键的方法
## 问题背景在使用`mouseDragged`处理拖动事件时,如果还想限定是鼠标哪个键,一般会想到以下方法```javatopBox.addMouseMotionListener(new MouseMotionAdapter() { @Override public void mouseDragged(MouseEvent e) { if (e.getButton() != MouseEvent.BUTTON1) return; ... }原创 2022-10-29 11:09:10 · 3093 阅读 · 0 评论 -
com.sun.awt.AWTUtilities被废弃的替代方案
## 问题背景相信在用`setWindowShape`或者`setWindowOpaque`的朋友在升级了jdk版本后发现用不了了,是因为`com.sun.awt.AWTUtilities`在未来的版本中被废弃了,那如果不想降低jdk版本还想实现对应的功能怎么办呢?## 解决方案既然官方敢废弃,说明原来的东西肯定有问题,或者有更好的替代方案,事实上- `setWindowShape`的替代方案是调用JFrame的`setShape(Shape shape)`就可以了- `setWindowOpa原创 2022-09-19 21:38:01 · 866 阅读 · 0 评论 -
Swing使JPopupMenu背景透明
## 问题背景现在要使`JPopupMenu`背景完全透明,并且我想自定义它的背景,并且不影响它的菜单项的样式## 解决过程首先看到这个需求,按照基本思路是重写`JPopupMenu`类,重写`paintComponent`方法画一个背景。但是`JPopupMenu`与其他组件的自定义方法不同,它没有我们想象地那么简单,它是基于`Window`类的一个重量级组件,你会发现,即便是重写了该方法,并且什么也不做,依旧会有一个灰色的背景!并且`setOpaque(false)`依旧无效!...原创 2022-06-14 17:19:20 · 437 阅读 · 0 评论 -
Swing界面实现全局抗锯齿
问题背景在用Swing开发一个GUI程序,对界面设置字体后无论怎样字体都会有严重的锯齿,例如下图的字体解决方案在初始化JFrame之前,先调用如下代码即可。注意:在初始化JFrame之前调用,在初始化JFrame之前调用,在初始化JFrame之前调用!!!否则不起作用!!!// 全局字体抗锯齿,必须在初始化 JFrame 之前调用!static voidenableAntiAliasing() { System.setProperty("awt.useSystemAAFontSettin原创 2022-02-02 15:14:44 · 1504 阅读 · 0 评论 -
解决Swing调用JavaFX中的视频组件第一次能正常播放但多次播放报NullPointerException的问题
问题背景:使用JavaFX的MediaPlayer加载和播放时,第一次能够成功加载,第2-n次报异常,如下Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at com.sun.media.jfxmediaimpl.platform.gstreamer.GSTMediaPlayer.playerSetBalance(GSTMediaPlayer.java:242) at com.sun.media.jfxmedi原创 2021-01-23 16:16:45 · 522 阅读 · 3 评论 -
Swing设置滚动条的滚动速度
一般来说,滚动条不加一般的JTextArea、JList、JTable等等是滚动速度很慢,因此需要按下面的方法设置滚动速度。JScrollPane.getVerticalScrollBar().setUnitIncrement(30);原创 2021-01-17 16:52:44 · 1171 阅读 · 0 评论 -
Swing实现设置文字透明度的思路
问题背景:写一个播放器,歌词列表中非高亮的歌词有透明度,只有高亮歌词才没有透明度我们知道JList中的内容其实就是一个一个JLabel组成的,因此只需设置JLabel中的透明度就行了。但JLabel只有一个setOpque方法,而且还是让组件透明而不是其中的文字透明的,我现在想让文字有透明度怎么办?一、文字不带HTML标签我们知道Swing是支持HTML的,如果你想让没有使用HTML标签的文字透明,些许还好办,自定义一个LabelUI,重写paintEnabledText或paintDisabledT原创 2021-01-09 15:12:58 · 496 阅读 · 0 评论 -
Swing实现播放器进度条(可随意拖动进度)的思路引导
问题背景:用Swing写一个播放器,要求进度条能够灵活拖动改变当前播放时间。说到Swing中能显示进度的,我们立马想到了进度条。但是进度条这东西设计的初衷只是给你看进度的,而不具备自由调节的功能。因此马上就pass掉了。Swing中还有另一个灵活的组件:JSlider,也就是滑动条。这个条只要多思考是可以产生一些妙用的。我们可以在播放器中用一个线程去setValue,随着播放时间推进,从而使滑动条推进。但是问题来了:另一个线程不断更新滑动条的值时,你会发现你去拖动滑动条是无效的,又回到原来的位置。思考原创 2021-01-07 21:37:26 · 1473 阅读 · 2 评论 -
Swing自定义淡入淡出式对话框,可自动关闭
可以自己调整停留时间,对话框颜色,透明度等等package com.ui;import com.constant.Fonts;import sun.font.FontDesignMetrics;import java.awt.*;import java.awt.event.*;import javax.swing.*;/** * @Author yzx * @Description 自定义淡入淡出式对话框 * @Date 2021/1/5 */public class Tip原创 2021-01-06 13:53:39 · 363 阅读 · 0 评论 -
解决swing中DefaultListModel多线程中添加/删除元素总是抛出ArrayIndexOutOfBoundsException的问题
问题背景:在写一个播放器,其中的歌词需要一段时间后自动删除第一行,实现歌词滚动,这个操作用DefaultListModel.remove(0)在另一线程中完成。但是,总是抛出ArrayIndexOutOfBoundsException,而且这个异常没办法catch掉,想办法解决中。。。异常内容大致如下:Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 37 >= 0 at jav原创 2021-01-04 17:37:31 · 464 阅读 · 0 评论 -
谈谈swing中JList选中第一项之后刷新极慢BUG的解决方案
当你使用JList时,不可避免从ListModel中增删数据,每次修改ListModel,JList会自动刷新,刷新过程很快,你几乎看不到元素一个一个加进去的过程,而是啪的一下很快啊!但是,当你选中JList中第一行的数据再去修改ListModel时,会发现刷新出奇的慢,你能清晰地看到数据一行一行慢慢增加;而奇怪的是,当你选中第2,3,4等其他行时,即使你有上万条数据,都是啪一下就出来了。swing的JList就是有这样一个bug,如何解决呢,我尝试过更新数据之前先清除选中,但无济于事list.cle原创 2021-01-05 11:22:38 · 416 阅读 · 0 评论 -
IDEA使用不了com.sun.awt.AWTUtilities解决
com.sun.awt这个包比较特殊,默认被限制访问,使用它需要单独引入jdk下的rt.jar包,如图,相信添加一个jar包不是什么难事~原创 2021-01-06 11:51:25 · 2438 阅读 · 2 评论