有什么理由不喜欢Java呢?
我喜欢 Java 让我可以在一个平台上编写应用程序,并在其他平台上运行它们。 你不必使用特定于平台的 SDK,为那个平台使用不同的库,或插入小代码hack 来使另一个平台正常运行。 对我来说,所有现代编程都应该如此简单。 Java 周围也有很棒的基础设施,例如 Maven 构建系统 和 SDKMan。
但我有一点不喜欢 Java:其默认 GUI 工具包(称为 Swing)的外观和感觉。 虽然有些人觉得 Swing 有一种迷人的怀旧感,但对于现代计算机用户来说,它看起来可能有点过时。
幸运的是,这是一个容易解决的问题。 Java 是一种编程语言,因此如果您使用 Java 编写应用程序,您可以使用几个 Java 主题库之一来重新编程其外观。
Java Swing 的默认主题
Java Swing 的默认主题在过去十年中变化不大。 这是 2006 年的一个 Java 应用程序示例的屏幕截图——还是 2022 年?
很难说。

(Faxe, GPLv3)
您可以通过以下演示代码亲自查看更简单的版本
package com.opensource.myexample2app;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Insets;
import javax.swing.JRadioButton;
public class App extends JFrame {
private void run() {
var window = new JPanel();
window.setLayout(new BoxLayout(window, BoxLayout.X_AXIS));
window.setBorder(new EmptyBorder(new Insets(15, 15, 15, 15)));
JButton btn_hello = new JButton("Hello");
btn_hello.setSize(new Dimension(80, 20));
window.add(btn_hello);
window.add(Box.createRigidArea(new Dimension(10, 15)));
JRadioButton rad_world = new JRadioButton("World");
rad_world.setSize(new Dimension(80, 20));
window.add(rad_world);
add(window);
pack();
setTitle("Hello world");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
}
public static void main(String[] args) {
EventQueue.invokeLater(() -> {
var app = new App();
app.run();
app.setVisible(true);
});
}
}
在您选择的Java IDE中运行它,或直接使用Java运行它
$ java App.java
结果很简单但具有示范性

(Seth Kenlon, CC BY-SA 4.0)
外观 Java 库
Java Swing 从外观 (LAF) 库获取其主题。
Java 捆绑的几个在紧要关头就足够了,但是可以使用更新的,并且您可以将这些库与您的代码捆绑在一起,以使您的应用程序具有不同的主题。 您可以通过在诸如 Mvnrepository.com 之类的站点或在诸如 GitLab 或 GitHub 之类的流行编码站点上搜索“laf”来找到 LAF 库。
我最喜欢的是 FlatLaf,但是 NetBeans、IntelliJ 和许多其他公司也有非常好的主题,它们在各种不同的许可下,适合任何项目。
使用这些库的最简单方法是将其添加到 Maven,然后对代码进行少量修改以调用主题。
首先,将库添加到 Maven
<dependencies>
<dependency>
<groupId>com.formdev</groupId>
<artifactId>flatlaf</artifactId>
<version>2.0.1</version>
</dependency>
</dependencies>
接下来,将 Java UIManager
库和你正在使用的 LAF 主题导入到你的项目中。
import com.formdev.flatlaf.FlatLightLaf;
import javax.swing.UIManager;
在创建 GUI 的类中,使用 UIManager
来设置应用程序的外观
try {
UIManager.setLookAndFeel( new FlatLightLaf() );
} catch( Exception ex ) {
System.err.println( "Failed to initialize theme. Using fallback." );
}
就是这样! 启动您的应用程序以查看新的外观。

(Seth Kenlon, CC BY-SA 4.0)
Flatlaf 恰好有变体主题,因此您可以将 FlatLightLaf
更改为 FlatDarkLaf
以获得黑暗主题

(Seth Kenlon, CC BY-SA 4.0)
或者使用 FlatIntelliJLaf
获得类似 IntelliJ 的外观

(Seth Kenlon, CC BY-SA 4.0)
或者 FlatDarculaLaf
获得黑暗的 IntelliJ 外观

(Seth Kenlon, CC BY-SA 4.0)
看起来不错,Java
Java Swing 是一个易于使用的工具包。 它已经维护了二十年,并且提供了出色的桌面体验。
使用外观库,Swing 也可以看起来很棒。
评论已关闭。