This project does not require frequent updates as it is a look and feel for Swing, which is a stable framework. You can assume it works unless otherwise stated.
- Links
- Installation
- Media (Screenshots & Videos)
- Supported Components
- Enhanced Components
- Credits & Inspiration
- Discussions/Forum
- Documentation
- Related Projects
- VTerminalPaletteEditor, which can be used to create or edit custom palettes for use with VTerminal.
- VTerminalTestGUI, which I use to visually test VTerminal.
- Chris Reuter's demo, showing how VTerminal can be used with JRuby.
- Performance Tips
- Resolving Compatibility & Render Issues
VTerminal is hosted on the JitPack package repository which supports Gradle, Maven, and sbt.
Add JitPack to your build.gradle at the end of repositories.
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Add VTerminal as a dependency.
dependencies {
implementation 'com.github.Valkryst:VTerminal:2026.11.05'
}
Add JitPack as a repository.
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>Add VTerminal as a dependency.
<dependency>
<groupId>com.github.Valkryst</groupId>
<artifactId>VTerminal</artifactId>
<version>2026.11.05</version>
</dependency>Add JitPack as a resolver.
resolvers += "jitpack" at "https://jitpack.io"
Add VTerminal as a dependency.
libraryDependencies += "com.github.Valkryst" % "VTerminal" % "2026.11.05"
Please note that all screenshots and videos will look worse than if you were to run the example GUI yourself. This is primarily due to compression.
- JButton
- JCheckBox
- JLabel
- JLayeredPane
- JPasswordField
- JProgressBar
- JRadioButton
- JScrollPane
- VEditorPane
- VPanel
- VTextArea
- VTextField
- VTextPane
- Click-through of the example GUI used for testing VTerminal. This covers most, if not all the supported components.
If there is a component that you'd like VTerminal to support, or if you're experiencing any issues with the supported components, then please feel free to open an issue.
- JButton
- JCheckBox
- JEditorPane
- JLabel
- JPanel
- JPasswordField
- JProgressBar
- JRadioButton
- JScrollPane
- JTextArea
- JTextField
- JTextPane
- JToolTip
- VFrame
- A subclass of JFrame which allows for easier en/disabling of full-screen mode and which has a number of convenience methods.
- VPanel
- A subclass of JPanel which allows for displaying a 2D grid of characters in which each cell can display a unique fore/background color and code point (Unicode character).
Every component rendered by the VTerminal LAF automatically applies a set of
high-quality RenderingHints
(antialiasing, bicubic interpolation, etc.) to its Graphics2D context before
painting. No special subclasses are required — standard Swing components work
as-is once the LAF is installed.
The following image shows a JEditorPane rendered with and without high-quality
hints side-by-side.
There are three control levels, applied in order of precedence:
1. Global default — enabled by default; applies to every component.
// Disable high-quality rendering for all components.
VTerminalLookAndFeel.enableHighQualityRendering(false);
// Re-enable it.
VTerminalLookAndFeel.enableHighQualityRendering(true);2. Per-component override — overrides the global default for a single component.
// Force high-quality rendering for this component regardless of the global default.
component.putClientProperty(VTerminalLookAndFeel.HIGH_QUALITY_RENDERING_KEY, Boolean.TRUE);
// Force low-quality rendering for this component regardless of the global default.
component.putClientProperty(VTerminalLookAndFeel.HIGH_QUALITY_RENDERING_KEY, Boolean.FALSE);3. Clear the override — removes the per-component override and reverts to the global default.
component.putClientProperty(VTerminalLookAndFeel.HIGH_QUALITY_RENDERING_KEY, null);- Architecture
- Robert Eckstein's "Java SE Application Design With MVC".
- Juri Strumpflohner's "Logical separation with MVC", a follow-up to Eckstein's article.
- Filthy Rich Clients: Developing Animated and Graphical Effects for Desktop Java™ Applications
- Trystan's AsciiPanel.
- VFont
- The FontGenerator from ZenDarva's AsylumRLE.
- The FontRenderer from Oddlabs' Tribal Trouble.



