4.7 KiB
Darklaf - A Darcula Look and Feel
This project is based on the darcula look and feel for Swing.
Screenshots
Darcula Theme | IntelliJ Theme |
Solarized Dark Theme | Solarized Light Theme |
Usage & Features
The LaF is compatible with Java >=1.8 (you need >=1.9 to get proper scaling). You can either use the current build from releases or the the bin folder. These binaries already include a stripped down version of all dependecies.
A list of all features can be found here.
This project is available on Maven Central:
Maven
<dependency>
<groupId>com.github.weisj</groupId>
<artifactId>darklaf</artifactId>
<version>1.3.1.6</version>
</dependency>
Gradle
implementation 'com.github.weisj:darklaf:1.3.1.6'
Installation
The LookAndFeel can be easily installed using the 'LafManager'
LafManager.install(); //For default theme (IntelliJ)
LafManager.install(new DarculaTheme()); //Specify the used theme.
or by using the UIManager
LafManager.setTheme(new DarculaTheme());
UIManager.setLookAndFeel(DarkLaf.class.getCanonicalName());
Example
import com.github.weisj.darklaf.LafManager;
import javax.swing.*;
import java.awt.*;
public class DarklafDemo {
public static void main(final String[] args) {
SwingUtilities.invokeLater(() -> {
LafManager.install();
JFrame frame = new JFrame("Darklaf - A themeable LaF for Swing");
frame.setSize(600, 400);
JButton button = new JButton("Click here!");
JPanel content = new JPanel();
content.add(button);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(content);
frame.setVisible(true);
});
}
}
All custom component-variants and settings are customizable by setting the appropriate client property of the component.
//Todo: list of properties
This LookAndFeel supports custom window decorations (only Windows at this point). In contrast to most other LaFs the native window behaviour is not compromised giving a seamless experience that still looks native.
Build
To build the project replace the build.gradle
script with the one
fitting your platform i.e.
- You only have a x86 cpp installation ->
build_x86.gradle
- You only have a x64 cpp installation ->
build_x64.gradle
- You have a 86x_64x_multilib installation ->
build.gradle
Contribute
Here is a list of things that currently are not finished or need refinement. This list is a work in progress and being updated regulary. If you find any problems with the LaF feel free to submit an issue:
- Native window decorations on Linux and MacOS.
- See jniplatform/cpp for the windows implementation.
- Adjustment of platform specific properties
- See the properties folder especially the plaform folder.
- See todo in DarkLaf
- Custom TabComponents may be visible during DnD with JTabbedPane.
- Right to left layout support in DarkTitlePane.
- Examine if Todo branch in TabbedPaneUtil needs something to be done about.
- Arrow button cycle support for JComboBox.