Java 仿 IntelliJ IDEA idea的 UI 框架 flatlaf——《我的Java打怪日记》

简介: 使用JAVA写界面一直是一个麻烦事,作为一个前端,在写前端页面的时候有不少的UI库可以使用。于是聪明机智的我,就想到也许JAVA上也许会有一个类似的UI库,可以直接引入调用。而作为一个软件,我本人一直欣赏intelliJ编译器的界面,所以就去狠狠的搜索了一下有没有仿照它做出来的UI库。 结果显而易见,是有的!一款叫做 FlatLaf 的 UI 库就是仿照intelliJ编译器做出来的UI库,大家可以通过MAVEN直接引用它,放到自己的软件中去。

前言

众所周知,JAVA这门语言,深受不少程序员小伙伴的喜爱。当然世界上最好的语言还是PHP。好的,不说废话,让我们直接进入正题。不少使用Java编程语言的小伙伴,会使用IntelliJ IDEA这款编译器。而这款编译器的界面也非常的有科技感。不少小伙伴也许撇下eclipse的原因就是被intelliJ的颜值给吸引到了。当然我个人也非常的喜欢IntelliJ的界面。

正题

使用JAVA写界面一直是一个麻烦事,作为一个前端,在写前端页面的时候有不少的UI库可以使用。于是聪明机智的我,就想到也许JAVA上也许会有一个类似的UI库,可以直接引入调用。而作为一个软件,我本人一直欣赏intelliJ编译器的界面,所以就去狠狠的搜索了一下有没有仿照它做出来的UI库。
结果显而易见,是有的!一款叫做 FlatLaf 的 UI 库就是仿照intelliJ编译器做出来的UI库,大家可以通过MAVEN直接引用它,放到自己的软件中去。

FlatLaf 是个什么库?

首先放一下它的官网:https://www.formdev.com/flatlaf/
然后它的全称就是 Flat Look and Feel ,平面(flat)的外观和感觉。
官方文档是这么介绍的:

FlatLaf is a modern open-source cross-platform Look and Feel for Java Swing desktop applications.
It looks almost flat (no shadows or gradients), clean, simple and elegant. FlatLaf comes with Light, Dark,IntelliJ and Darcula themes, scales on HiDPI displays and runs on Java 8 or newer.
The look is heavily inspired by Darcula and IntelliJ themes from IntelliJ IDEA 2019.2+ and uses almost the same colors and icons.

我给大家翻译下:

FlatLaf 是一款现代的开源跨平台的为JAVA Swing桌面应用开发的 东西。它看起来基本是平的(没有阴影或渐变)、干净、简单、优雅。FlatLaf 带有 亮色、黑色、IntelliJ、德古拉 主题,在 HiDPI 显示器上缩放,在 Java 8 或更新版本上运行。外观非常受到 IntelliJ IDEA 2019.2+版本自身 及其Darcula 主题启发,基本上使用相同颜色和图标。

如果把它用在自己的项目中?

很简单的在 pom.xml 中添加以下代码就可以使用了。

        <dependency>
            <groupId>com.formdev</groupId>
            <artifactId>flatlaf</artifactId>
            <version>1.0</version>
        </dependency>

如果想切换IntelliJ主题还可以添加以下包

        <dependency>
            <groupId>com.formdev</groupId>
            <artifactId>flatlaf-intellij-themes</artifactId>
            <version>1.0</version>
        </dependency>

如何启动

以下是我写的一个 Starter.java 可以将此UI应用到程序中。

import com.formdev.flatlaf.FlatLaf;
import com.formdev.flatlaf.FlatLightLaf;
import com.formdev.flatlaf.intellijthemes.FlatDarkFlatIJTheme;

import javax.swing.*;

public class Starter {
    public static void main(String[] args){

        FlatLightLaf.install();
        FlatDarkFlatIJTheme.install();

        MainWindow frame = new MainWindow();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);

    }
}

代码解释:
需要 Import 相关的库,然后使用 FlatLightLaf.install(); FlatDarkFlatIJTheme.install(); 两句代码让样式库生效。这两句是重点。

享受新的样式

通过以上的方式,就可以将这个UI库应用到自己的程序中了。如果大家对这个UI库有更多的想要探索的地方,它也是一个开源的程序,可以在GITHUB上面来查看。额外的,也可以下载它的DEMO程序来查看它的样式使用起来是什么效果的。在这里我贴上网址 :https://github.com/JFormDesigner/FlatLaf
它也不单单只有亮色和黑色,还有其他很多颜色,比如紫色之类的,可以自定义的程度还是非常高的。可以引入它不同的主题的包来更换。十分方便。

感谢各位小伙伴浏览此教程!

相关文章
|
10月前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
10月前
|
存储 安全 Java
《数据之美》:Java集合框架全景解析
Java集合框架是数据管理的核心工具,涵盖List、Set、Map等体系,提供丰富接口与实现类,支持高效的数据操作与算法处理。
|
10月前
|
消息中间件 缓存 Java
Spring框架优化:提高Java应用的性能与适应性
以上方法均旨在综合考虑Java Spring 应该程序设计原则, 数据库交互, 编码实践和系统架构布局等多角度因素, 旨在达到高效稳定运转目标同时也易于未来扩展.
852 8
|
10月前
|
存储 算法 安全
Java集合框架:理解类型多样性与限制
总之,在 Java 题材中正确地应对多样化与约束条件要求开发人员深入理解面向对象原则、范式编程思想以及JVM工作机理等核心知识点。通过精心设计与周密规划能够有效地利用 Java 高级特征打造出既健壮又灵活易维护系统软件产品。
246 7
|
11月前
|
人工智能 Java 开发者
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
JManus是阿里开源的Java版OpenManus,基于Spring AI Alibaba框架,助力Java开发者便捷应用AI技术。支持多Agent框架、网页配置、MCP协议及PLAN-ACT模式,可集成多模型,适配阿里云百炼平台与本地ollama。提供Docker与源码部署方式,具备无限上下文处理能力,适用于复杂AI场景。当前仍在完善模型配置等功能,欢迎参与开源共建。
3485 58
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
|
11月前
|
SQL Java 数据库连接
区分iBatis与MyBatis:两个Java数据库框架的比较
总结起来:虽然从技术角度看,iBATIS已经停止更新但仍然可用;然而考虑到长期项目健康度及未来可能需求变化情况下MYBATISS无疑会是一个更佳选择因其具备良好生命周期管理机制同时也因为社区力量背书确保问题修复新特征添加速度快捷有效.
890 12
|
12月前
|
存储 缓存 安全
Java集合框架(三):Map体系与ConcurrentHashMap
本文深入解析Java中Map接口体系及其实现类,包括HashMap、ConcurrentHashMap等的工作原理与线程安全机制。内容涵盖哈希冲突解决、扩容策略、并发优化,以及不同Map实现的适用场景,助你掌握高并发编程核心技巧。
|
12月前
|
存储 缓存 安全
Java集合框架(二):Set接口与哈希表原理
本文深入解析Java中Set集合的工作原理及其实现机制,涵盖HashSet、LinkedHashSet和TreeSet三大实现类。从Set接口的特性出发,对比List理解去重机制,并详解哈希表原理、hashCode与equals方法的作用。进一步剖析HashSet的底层HashMap实现、LinkedHashSet的双向链表维护顺序特性,以及TreeSet基于红黑树的排序功能。文章还包含性能对比、自定义对象去重、集合运算实战和线程安全方案,帮助读者全面掌握Set的应用与选择策略。
1401 23
|
12月前
|
存储 安全 Java
Java集合框架(一):List接口及其实现类剖析
本文深入解析Java中List集合的实现原理,涵盖ArrayList的动态数组机制、LinkedList的链表结构、Vector与Stack的线程安全性及其不推荐使用的原因,对比了不同实现的性能与适用场景,帮助开发者根据实际需求选择合适的List实现。
1289 0
|
安全 Java 开发者
Java集合框架:详解Deque接口的栈操作方法全集
理解和掌握这些方法对于实现像浏览器后退功能这样的栈操作来说至关重要,它们能够帮助开发者编写既高效又稳定的应用程序。此外,在多线程环境中想保证线程安全,可以考虑使用ConcurrentLinkedDeque,它是Deque的线程安全版本,尽管它并未直接实现栈操作的方法,但是Deque的接口方法可以相对应地使用。
548 12