Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linux 系统下按钮字体锯齿严重,建议添加抗锯齿设置。 #107

Closed
blickers opened this issue Aug 4, 2022 · 5 comments
Closed

Comments

@blickers
Copy link

blickers commented Aug 4, 2022

我已经确认

  • 使用的当前版本为最新版本
  • issue区没有类似的情况(有的话请直接去该问题讨论)

问题描述
可能作者没有在 Linux 系统下测试过这个软件。根据我在 Ubuntu 22.04 下的测试,软件 UI 按钮的字体没有启用抗锯齿,看起来非常难看。建议增加抗锯齿代码。

问题出在 src/nicelee/ui/item/MJButton.java 这个文件里,解决的办法如下:

增加
import java.awt.Graphics2D;
import java.awt.RenderingHints;

public void paint(Graphics g, JComponent c) 修改为 public void paint(Graphics2D g, JComponent c)

另外在 FontMetrics fm = g.getFontMetrics(); 这一行后面增加一行:
g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);

可以完美解决 Linux 下按钮字体锯齿严重,看起来很丑陋的问题,请求作者修正。

另外软件 UI 其实不用自己设置顶部标题栏、关闭、最小化按钮等,交给操作系统去处理。否则这些 UI 元素不跟随操作系统主题,与操作系统主题格格不入,很难看,特别是在 macOS 和 Linux (调用系统 gtk 主题)下。建议作者考虑去掉这些元素。

相关信息

  • 当前系统(windows/linux等):Ubuntu 22.04
  • java版本:openjdk-11-jdk:amd64 11.0.15+10-0ubuntu0.22.04.1
@blickers
Copy link
Author

blickers commented Aug 4, 2022

关于软件在 macOS 和 Linux 下窗口标题栏、最小化、关闭按钮及颜色的问题,见图片(已选择调用系统主题,只有tab页面内部颜色、按钮、字体等会跟随系统主题变化,tab外的部分如软件边框、标题栏等不变):
1

建议交给操作系统处理软件边框、标题栏和和最小化、关闭按钮。

@nICEnnnnnnnLee
Copy link
Owner

首先得承认,界面这一块确实很挫。


Linux 系统下按钮字体锯齿严重

这个可以改


不用自己设置顶部标题栏、关闭、最小化按钮等

这个是有历史原因的,如果要把操作|配置|关于菜单移到顶部,只能自定义标题栏。
menu2titlebar

我并不觉得自定义标题栏有什么不好,它的风格确实和MacOS不搭,但没有到需要回退的地步。
如果你实在需要,可以将主类从nicelee.ui.FrameMain改为nicelee.ui.FrameMain_v3_4看看效果
(当然功能可能随着版本迭代已经出现问题)。

java -Dfile.encoding=utf-8 -cp INeedBiliAV.jar nicelee.ui.FrameMain_v3_4

我可以恢复对nicelee.ui.FrameMain_v3_4的功能支持,但不会为此再做更多。


调用系统主题,只有部分跟随系统主题变化...

  • 首先,经测试在Ubuntu22.04 open-jdk11深色模式下,程序显示基本上和浅色模式没啥区别。
    dark-mode2
    我认为程序显示在深色/浅色模式下一样是符合预期的。
    上面部分适配的情况应该是配置或者代码做了改动,或者说Java Swing的这部分实现可能是针对Mac??

  • 另外,这实际上是一个新的需求,即适配深色模式Dark mode。
    我可以说,即使是不自定义button、标题栏,全都交给系统,仍然有地方需要适配。
    同时,那也只是换种丑法。
    你可以将试试配置bilibili.button.style = default,看看长得咋样。
    我认为这会有一个较大的工作量,大到我宁愿推倒重来。我不会再用Swing,亦或者JavaFX;如果再要写多平台界面,我会选择electron,或者做个本地服务器+前端,通过浏览器操作。
    我不会为此做更多改动

@blickers
Copy link
Author

blickers commented Aug 8, 2022

可能是各人喜好吧,你把 UI 弄得太“花俏”了,那些背景图片,看得眼花。
我一顿修改,把默认界面还原成一般软件常见的朴素样子,感觉看起来顺眼很多。让 UI 主题默认跟随系统主题变化,它能自己适应白天模式和暗夜模式,看截图:
0-2
0
1-2
1
2

@blickers
Copy link
Author

blickers commented Aug 8, 2022

我直接改了 FrameMain.java 和其他一些文件,并没有使用 FrameMain_v3_4.java

关于配置文件路径、下载保存路径,我觉得也很有问题,没有考虑到不同操作系统的处理,建议增加一些代码,判断操作系统类型,按不同操作系统,调用不同的默认路径。

比如,Linux 系统下,默认 app.config 应该保存到 /etc/BilibiliDown 下,user.config 应该保存到 ~/.config/BilibiliDown 下,默认下载目录为 ~/Downloads

macOS 系统下,app.config 保存到 /Library/'Application Support'/BilibiliDown 下, user.config 应该保存到 ~/Library/'Application Support'/BilibiliDown 下,,默认下载目录为 ~/Downloads

Windows 下也不建议将默认下载路径设置为当前路径下的 ./download

还有一个问题是 Linux、macOS 下制作 jar 包的 package.sh 用的是 Windows 换行符,在 Linux/macOS 下会出问题。建议用 dos2unix 处理一下,换上去,更新掉源码库里的原文件。

nICEnnnnnnnLee added a commit that referenced this issue Aug 20, 2022
@github-actions
Copy link

github-actions bot commented Sep 7, 2022

由于长期没有状态更新,该问题自动关闭。如有需要可重新打开。

@github-actions github-actions bot closed this as completed Sep 7, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants