Compare commits

...

86 Commits
0.40 ... 0.43

Author SHA1 Message Date
Karl Tauber
57655d8859 release 0.43 2020-10-05 14:36:54 +02:00
Karl Tauber
62ffd57108 Windows: made scaling compatible with Windows OS scaling, which distinguish between "screen scaling" and "text scaling" (issue #175) 2020-10-05 13:14:44 +02:00
Karl Tauber
8db05f47b5 FlatChooserTest: grow file chooser when resizing window 2020-10-04 23:59:28 +02:00
Karl Tauber
c684761eef ComboBox: limit popup width to screen width for very long items (issue #182) 2020-10-04 18:59:54 +02:00
Karl Tauber
0a8ece8c9c no longer use static fields for shared instances of UI delegates because this makes problems in GUI builders that support Laf switching and use more than one FlatLaf theme at the same time 2020-10-04 14:21:00 +02:00
Karl Tauber
01058bde1b UI defaults inspector: fixed key rendering for Nimbus Laf 2020-10-04 14:03:39 +02:00
Karl Tauber
9c2c03cddb Spinner: fixed NullPointerException in case that arrow buttons were removed to create button-less spinner (issue #181) 2020-10-04 13:58:23 +02:00
Karl Tauber
f0778a83a0 CheckBoxMenuItem and RadioButtonMenuItem: improved checkmark background colors of selected menu items that have also an icon 2020-09-25 00:07:25 +02:00
Karl Tauber
b86ae1f122 FileChooser: fixed localizing special Windows folders (e.g. "Documents") and enabled hiding known file extensions (if enabled in Windows Explorer) (issue #178) 2020-09-24 22:27:10 +02:00
Karl Tauber
dfd6831b02 ComboBox: if using own JTextField as editor, default text field border is now removed to avoid duplicate border 2020-09-24 22:17:10 +02:00
Karl Tauber
a4ddc13c1a TabbedPane: added some missing UI defaults 2020-09-24 22:05:07 +02:00
Karl Tauber
fd63a1b7c2 TabbedPane: support hiding separator between tabs and content area via client property 2020-09-24 22:03:39 +02:00
Karl Tauber
d83c3689d0 TabbedPane:
- made tabs separator color lighter in dark themes so that it is easier to recognize the tabbed pane
- added top and bottom tab insets to avoid that large tab icons are painted over active tab underline
2020-09-24 15:18:45 +02:00
Karl Tauber
d52bf9d318 FlatScreenInfo: output warning if screens intersect (issue #177) 2020-09-23 21:44:00 +02:00
Karl Tauber
80f56dec15 travis: added openjdk15 2020-09-23 19:03:53 +02:00
Karl Tauber
358c226b96 update to Gradle 6.6.1
./gradlew wrapper --gradle-version=6.6.1
2020-09-23 18:42:12 +02:00
Karl Tauber
9de9983416 laf.dark flag added to UI defaults 2020-09-20 10:59:50 +02:00
Karl Tauber
c9da4fcaf1 UI defaults: dumps moved out of resources folder to dumps/uidefaults folder 2020-09-18 14:41:15 +02:00
Karl Tauber
932ca6f9d4 FlatDesktopPropertiesDump tool added
developed to find out whether it is possible to detect Windows screen scaling and text scaling factors in Java 8, which seems to be possible by using "win.defaultGUI.font" desktop property

issue #175
2020-09-18 14:24:30 +02:00
Karl Tauber
4487c9985c release 0.42 2020-09-17 15:51:27 +02:00
Karl Tauber
a53ce99977 PasswordField: support disabling Caps Lock warning icon (issue #172) 2020-09-17 15:34:57 +02:00
Karl Tauber
5444719895 Extras: added screenshots to README.md and instructions for using UI inspectors 2020-09-17 14:20:59 +02:00
Karl Tauber
b66139281d FlatHtmlTest: fixed labels and added HTML tooltips 2020-09-17 13:50:56 +02:00
Karl Tauber
8925c27eb9 ToolTip: avoid that tooltip hides owner component (issue #164) 2020-09-17 13:32:28 +02:00
Karl Tauber
99be346387 FlatWindowDecorationsTest: disable "add/remove/change menu" buttons if shown in dialog, which does not have a menubar 2020-09-17 13:28:02 +02:00
Karl Tauber
81d46ba8ee Demo: show simple dialog for "File > New"
(used to test previous commit)
2020-09-17 13:26:45 +02:00
Karl Tauber
ef4c467b20 fixed occasional wrong positioning of heavy weight popups when using multiple screens with different scaling factors (issue #166)
workaround for https://bugs.openjdk.java.net/browse/JDK-8224608
2020-09-17 11:43:20 +02:00
Karl Tauber
44d196fb8c Demo: menu item "Options > Window decorations" did exit Demo
(regression in commit ee6a1da709)
2020-09-16 22:52:19 +02:00
Karl Tauber
867c4fff58 fixed compiling flatlaf-extras on Java 9+ 2020-09-15 18:06:56 +02:00
Karl Tauber
5643546117 UI defaults inspector:
- add placeholder text to filter field
- fixed menu item text in Demo
2020-09-15 17:56:20 +02:00
Karl Tauber
549832ba96 UI defaults inspector:
- fixed: indicate when a LaF UI value was overridden with UIManager.put(key,value)
- auto-refresh if UIManager.put(key,value) was invoked
2020-09-15 17:30:13 +02:00
Karl Tauber
a8744b2bb4 made disabled text color slightly lighter in dark themes for better readability (issue #174) 2020-09-15 15:47:12 +02:00
Karl Tauber
e292d3444c UI defaults inspector: avoid that restored window bounds are outside of screens 2020-09-15 15:09:03 +02:00
Karl Tauber
ee6a1da709 Demo: exit even if UI defaults inspector window is shown 2020-09-15 13:44:00 +02:00
Karl Tauber
8c15bc746b UI defaults inspector: render values of type Border, GrayFilter, Object[] and int[]; paint icons with light gray background 2020-09-15 13:16:01 +02:00
Karl Tauber
aebb083180 UI defaults inspector: indicate when a LaF UI value was overridden with UIManager.put(key,value) 2020-09-15 12:02:51 +02:00
Karl Tauber
5438549b6d UI defaults inspector: horizontally align rgb() and hsl() in color values 2020-09-15 10:56:28 +02:00
Karl Tauber
0077708235 UI defaults inspector: install it in FlatTestFrame and FlatThemeFileEditor 2020-09-15 00:32:04 +02:00
Karl Tauber
2fd99ec9f3 UI defaults inspector: support sorting 2020-09-15 00:16:57 +02:00
Karl Tauber
0d266c4990 UI defaults inspector: use short format for hex colors if possible; use uppercase hex 2020-09-14 23:53:54 +02:00
Karl Tauber
0982675b5f UI defaults inspector: support filter by value
this is also a preparation to support sort by value
2020-09-14 23:13:44 +02:00
Karl Tauber
3bac5d3c80 UI defaults inspector:
- update table if LaF was switched or F5 key pressed
- added LaF name to window title
- close window with ESC key
2020-09-14 21:18:52 +02:00
Karl Tauber
58338f4848 UI defaults inspector: scroll with Up, Down, PageUp and PageDown keys if filter field is focused 2020-09-14 20:35:41 +02:00
Karl Tauber
9c261d3a3f UI defaults inspector: support filter by key and by value type 2020-09-14 18:17:05 +02:00
Karl Tauber
5441ac6640 UI defaults inspector: added separator between component groups and draw component name with lighter color 2020-09-14 15:18:10 +02:00
Karl Tauber
015b04a29a UI defaults inspector: initial commit with basic functionality 2020-09-14 15:16:16 +02:00
Karl Tauber
12ec0abf54 UI defaults: moved some common properties from FlatLightLaf.properties and FlatDarkLaf.properties to FlatLaf.properties 2020-09-12 22:00:17 +02:00
Karl Tauber
c8d461cdee UI defaults: moved "globals" from FlatLightLaf.properties and FlatDarkLaf.properties to FlatLaf.properties 2020-09-12 20:53:23 +02:00
Karl Tauber
faecffeadd TextComponents: fixed text color of disabled text components in dark themes (issue #174) 2020-09-12 18:45:40 +02:00
Karl Tauber
b3c76c21b4 UIDefaultsLoader: moved some code to where it belongs (for previous commit) 2020-09-12 18:38:35 +02:00
Karl Tauber
1697735162 UIDefaultsLoader: changed processing of "globals" so that they are first added to the properties table (instead of directly modifying defaults table), which is then parsed and copied to defaults table
this has the advantage that they can be referenced in other values, which did not work before (because they only existed in `defaults` table)

used for Tree.textForeground
verified with UIDefaultsDump that there are no side effects
2020-09-12 18:13:34 +02:00
Karl Tauber
ecb94bac6d use short color format #RGB (instead of #RRGGBB) where possible 2020-09-11 21:24:00 +02:00
Karl Tauber
7ebeacf16e UIDefaultsDump: dump FlatTestLaf 2020-09-11 21:08:07 +02:00
Karl Tauber
d0079ab66b UIDefaultsLoader: use class loader from FlatLaf.registerCustomDefaultsSource(String, ClassLoader) also for instantiating classes specified in values
see commit b208017117
2020-09-11 17:58:12 +02:00
Karl Tauber
147e400bd6 FlatInspector: limit parent level to real depth at mouse location (issue #169) 2020-09-11 17:37:40 +02:00
Karl Tauber
c44905ea5e InternalFrame: support draggable border for resizing frame inside of the visible frame border (issue #121) 2020-09-04 22:59:09 +02:00
Karl Tauber
98b9df06fe Window decorations: fixed wrong window bounds when resizing window to another screen with different scaling factor (issue #166) 2020-09-04 09:46:12 +02:00
Karl Tauber
02473080a5 Window decorations: fixed wrong window placement when moving window to another screen with different scaling factor (issue #166) 2020-09-03 19:26:52 +02:00
Karl Tauber
c6beb9dc0a Demo: menu items "File > Open" and "File > Save As" now show file choosers 2020-09-03 18:16:28 +02:00
Karl Tauber
dcce14b122 FlatScreenInfo tool added 2020-09-03 15:55:12 +02:00
Karl Tauber
a2ac24ac74 Demo: "SplitPane & Tabs" tab improved 2020-09-03 15:09:28 +02:00
Karl Tauber
600f812f45 Demo: removed too large gap between content panel and control bar 2020-09-03 12:01:49 +02:00
Karl Tauber
e945f46f25 Demo: "Data components" tab: added checkboxes to control table grid and selection 2020-09-03 11:53:50 +02:00
Karl Tauber
c78c653b0a FlatComponents2Test: moved table checkboxes into tableOptionsPanel 2020-09-03 11:26:16 +02:00
Karl Tauber
e0b3663239 FlatComponents2Test: support testing large amount of list/tree/table rows 2020-09-03 11:12:00 +02:00
Karl Tauber
3cc9c98040 Demo:
- "Data components" tab: increase component height if frame is made larger
- "SplitPane & Tabs" tab: increased some gaps and renamed TabbedPane option checkboxes
- "Option Pane" and "Extras" tabs: minor layout improvements
2020-09-02 19:08:24 +02:00
Karl Tauber
ec8213b891 release 0.41 2020-09-02 11:23:43 +02:00
Karl Tauber
ae61383742 README.md: screenshots updated; removed unused screenshots 2020-09-01 18:50:26 +02:00
Karl Tauber
cc90a2ad75 Demo: reworked "More Components" tab and added screenshot mode 2020-09-01 17:24:26 +02:00
Karl Tauber
28634cda56 README.md: screenshots updated 2020-09-01 12:20:40 +02:00
Karl Tauber
3b71fcd690 Demo: fixed too large gap between themes list and control bar 2020-08-31 18:25:01 +02:00
Karl Tauber
5923ac65df smoother transition from old to new theme, independent of UI complexity, when using animated theme change 2020-08-31 18:10:54 +02:00
Karl Tauber
faffc9393d fixed sub-pixel text rendering in animated theme change; use weak hash map for static map to avoid memory leak for the case that something went wrong 2020-08-31 18:07:37 +02:00
Karl Tauber
6da220f36c IntelliJ Themes: updated themes to newest versions (used IJThemesUpdater) 2020-08-27 00:05:29 +02:00
Karl Tauber
21d78671d6 Demo: show hint popups to guide users to some features of the FlatLaf Demo application; added "Options > Show hints" menu item 2020-08-26 23:17:55 +02:00
Karl Tauber
af5a0ec0b7 Window decorations: fixed title pane background color in IntelliJ themes if window is inactive 2020-08-26 16:13:44 +02:00
Karl Tauber
ff214455a3 Window decorations: fixed iconify, maximize and close icon colors if window is inactive 2020-08-26 15:03:26 +02:00
Karl Tauber
3e941e3e42 Demo: fixed restoring last used theme on startup (regression in 0.39 since commit a8f4c8e843) 2020-08-26 12:35:26 +02:00
Karl Tauber
2f876d553f List and Table: fixed possible NPE in unusual cases 2020-08-26 12:16:11 +02:00
Karl Tauber
b208017117 added API to register packages or folders where FlatLaf searches for application specific properties files with custom UI defaults 2020-08-26 12:07:00 +02:00
Karl Tauber
a1dab94a61 TextArea: update background color property if enabled or editable state changes in the same way as Swing does it for all other text components (issue #147) 2020-08-25 19:15:53 +02:00
Karl Tauber
e55b2afd60 Button: show "selected" state (issue #161) 2020-08-25 16:41:40 +02:00
Karl Tauber
535c3ddf6c FlatSVGIcon now allows specifying ClassLoader that is used to load SVG file (issue #163) 2020-08-24 23:31:18 +02:00
Karl Tauber
3008d99fcd updated svgSalamander to version 1.1.2.3 2020-08-24 22:45:35 +02:00
Karl Tauber
fd37339e2f TableHeader: fixed NPE for the (unusual) case that JTableHeader is used without JTable 2020-08-13 17:07:44 +02:00
Karl Tauber
e29eca203c Theme Editor: build fat jar (includes all dependencies) (issue #160) 2020-08-12 14:02:04 +02:00
196 changed files with 10883 additions and 1933 deletions

View File

@@ -6,6 +6,7 @@ jdk:
- openjdk9
- openjdk11
- openjdk14
- openjdk15
before_cache:
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock

View File

@@ -1,6 +1,96 @@
FlatLaf Change Log
==================
## 0.43
#### New features and improvements
- TabbedPane: Made tabs separator color lighter in dark themes so that it is
easier to recognize the tabbed pane.
- TabbedPane: Added top and bottom tab insets to avoid that large tab icons are
painted over active tab underline.
- TabbedPane: Support hiding separator between tabs and content area (set client
property `JTabbedPane.showContentSeparator` to `false`).
- CheckBoxMenuItem and RadioButtonMenuItem: Improved checkmark background colors
of selected menu items that have also an icon. This makes it is easier to
recognize selected menu items.
- Windows: Made scaling compatible with Windows OS scaling, which distinguish
between "screen scaling" and "text scaling". (issue #175)
#### Fixed bugs
- ComboBox: If using own `JTextField` as editor, default text field border is
now removed to avoid duplicate border.
- ComboBox: Limit popup width to screen width for very long items. (issue #182)
- FileChooser: Fixed localizing special Windows folders (e.g. "Documents") and
enabled hiding known file extensions (if enabled in Windows Explorer). (issue
#178)
- Spinner: Fixed `NullPointerException` in case that arrow buttons were removed
to create button-less spinner. (issue #181)
## 0.42
#### New features and improvements
- Demo: Improved "SplitPane & Tabs" and "Data Components" tabs.
- Demo: Menu items "File > Open" and "File > Save As" now show file choosers.
- InternalFrame: Support draggable border for resizing frame inside of the
visible frame border. (issue #121)
- `FlatUIDefaultsInspector` added (see [FlatLaf Extras](flatlaf-extras)). A
simple UI defaults inspector that shows a window with all UI defaults used in
current theme (look and feel).
- Made disabled text color slightly lighter in dark themes for better
readability. (issue #174)
- PasswordField: Support disabling Caps Lock warning icon. (issue #172)
#### Fixed bugs
- TextComponents: Fixed text color of disabled text components in dark themes.
- Custom window decorations: Fixed wrong window placement when moving window to
another screen with different scaling factor. (issue #166)
- Custom window decorations: Fixed wrong window bounds when resizing window to
another screen with different scaling factor. (issue #166)
- Fixed occasional wrong positioning of heavy weight popups when using multiple
screens with different scaling factors. (issue #166)
- ToolTip: Avoid that tooltip hides owner component. (issue #164)
## 0.41
#### New features and improvements
- Added API to register packages or folders where FlatLaf searches for
application specific properties files with custom UI defaults (see
`FlatLaf.registerCustomDefaultsSource(...)` methods).
- Demo: Show hint popups to guide users to some features of the FlatLaf Demo
application.
- Extras: `FlatSVGIcon` now allows specifying `ClassLoader` that is used to load
SVG file. (issue #163)
- Smoother transition from old to new theme, independent of UI complexity, when
using animated theme change (see [FlatLaf Extras](flatlaf-extras)).
#### Fixed bugs
- Button: "selected" state was not shown. (issue #161)
- TextArea: Update background color property if enabled or editable state
changes in the same way as Swing does it for all other text components. (issue
#147)
- Demo: Fixed restoring last used theme on startup. (regression in 0.39)
- Custom window decorations: Fixed iconify, maximize and close icon colors if
window is inactive.
- Custom window decorations: Fixed title pane background color in IntelliJ
themes if window is inactive.
- Fixed sub-pixel text rendering in animated theme change (see
[FlatLaf Extras](flatlaf-extras)).
#### Other Changes
- Extras: Updated dependency
[svgSalamander](https://github.com/JFormDesigner/svgSalamander) to version
1.1.2.3.
## 0.40
#### New features

View File

@@ -11,9 +11,9 @@ 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.
![Flat Light Demo](images/FlatLightDemo.png)
![Flat Light](images/flat_light.png)
![Flat Dark Demo](images/FlatDarkDemo.png)
![Flat Dark](images/flat_dark.png)
IntelliJ Platform Themes
@@ -22,9 +22,7 @@ IntelliJ Platform Themes
FlatLaf can use 3rd party themes created for IntelliJ Platform (see
[IntelliJ Themes Pack](flatlaf-intellij-themes)):
![Cyan Light Demo](images/CyanLightDemo.png)
![Dark Purple Demo](images/DarkPurpleDemo.png)
![IntelliJ Platform Themes](images/intellij_platform_themes.png)
Demo

View File

@@ -14,8 +14,8 @@
* limitations under the License.
*/
val releaseVersion = "0.40"
val developmentVersion = "0.41-SNAPSHOT"
val releaseVersion = "0.43"
val developmentVersion = "0.44-SNAPSHOT"
version = if( java.lang.Boolean.getBoolean( "release" ) ) releaseVersion else developmentVersion

View File

@@ -216,6 +216,14 @@ public interface FlatClientProperties
*/
String TABBED_PANE_SHOW_TAB_SEPARATORS = "JTabbedPane.showTabSeparators";
/**
* Specifies whether the separator between tabs area and content area should be shown.
* <p>
* <strong>Component</strong> {@link javax.swing.JTabbedPane}<br>
* <strong>Value type</strong> {@link java.lang.Boolean}
*/
String TABBED_PANE_SHOW_CONTENT_SEPARATOR = "JTabbedPane.showContentSeparator";
/**
* Specifies whether a full border is painted around a tabbed pane.
* <p>

View File

@@ -29,6 +29,7 @@ import java.awt.image.ImageFilter;
import java.awt.image.ImageProducer;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
@@ -76,6 +77,8 @@ public abstract class FlatLaf
static final Logger LOG = Logger.getLogger( FlatLaf.class.getName() );
private static final String DESKTOPFONTHINTS = "awt.font.desktophints";
private static List<Object> customDefaultsSources;
private String desktopPropertyName;
private String desktopPropertyName2;
private PropertyChangeListener desktopPropertyListener;
@@ -341,6 +344,10 @@ public abstract class FlatLaf
public UIDefaults getDefaults() {
UIDefaults defaults = super.getDefaults();
// add flag that indicates whether the LaF is light or dark
// (can be queried without using FlatLaf API)
defaults.put( "laf.dark", isDark() );
// add resource bundle for localized texts
defaults.addResourceBundle( "com.formdev.flatlaf.resources.Bundle" );
@@ -460,9 +467,11 @@ public abstract class FlatLaf
uiFont = (font instanceof FontUIResource) ? (FontUIResource) font : new FontUIResource( font );
}
// fallback
if( uiFont == null )
uiFont = createCompositeFont( Font.SANS_SERIF, Font.PLAIN, 12 );
// increase font size if system property "flatlaf.uiScale" is set
uiFont = UIScale.applyCustomScaleFactor( uiFont );
// use active value for all fonts to allow changing fonts in all components
@@ -552,6 +561,87 @@ public abstract class FlatLaf
defaults.put( key, value );
}
static List<Object> getCustomDefaultsSources() {
return customDefaultsSources;
}
/**
* Registers a package where FlatLaf searches for properties files with custom UI defaults.
* <p>
* This can be used to specify application specific UI defaults that override UI values
* of existing themes or to define own UI values used in custom controls.
* <p>
* There may be multiple properties files in that package for multiple themes.
* The properties file name must match the used theme class names.
* E.g. {@code FlatLightLaf.properties} for class {@link FlatLightLaf}
* or {@code FlatDarkLaf.properties} for class {@link FlatDarkLaf}.
* {@code FlatLaf.properties} is loaded first for all themes.
* <p>
* These properties files are loaded after theme and addon properties files
* and can therefore override all UI defaults.
* <p>
* Invoke this method before setting the look and feel.
*
* @param packageName a package name (e.g. "com.myapp.resources")
*/
public static void registerCustomDefaultsSource( String packageName ) {
registerCustomDefaultsSource( packageName, null );
}
public static void unregisterCustomDefaultsSource( String packageName ) {
unregisterCustomDefaultsSource( packageName, null );
}
/**
* Registers a package where FlatLaf searches for properties files with custom UI defaults.
* <p>
* See {@link #registerCustomDefaultsSource(String)} for details.
*
* @param packageName a package name (e.g. "com.myapp.resources")
* @param classLoader a class loader used to find resources, or {@code null}
*/
public static void registerCustomDefaultsSource( String packageName, ClassLoader classLoader ) {
if( customDefaultsSources == null )
customDefaultsSources = new ArrayList<>();
customDefaultsSources.add( packageName );
customDefaultsSources.add( classLoader );
}
public static void unregisterCustomDefaultsSource( String packageName, ClassLoader classLoader ) {
if( customDefaultsSources == null )
return;
int size = customDefaultsSources.size();
for( int i = 0; i < size - 1; i++ ) {
Object source = customDefaultsSources.get( i );
if( packageName.equals( source ) && customDefaultsSources.get( i + 1 ) == classLoader ) {
customDefaultsSources.remove( i + 1 );
customDefaultsSources.remove( i );
break;
}
}
}
/**
* Registers a folder where FlatLaf searches for properties files with custom UI defaults.
* <p>
* See {@link #registerCustomDefaultsSource(String)} for details.
*
* @param folder a folder
*/
public static void registerCustomDefaultsSource( File folder ) {
if( customDefaultsSources == null )
customDefaultsSources = new ArrayList<>();
customDefaultsSources.add( folder );
}
public static void unregisterCustomDefaultsSource( File folder ) {
if( customDefaultsSources == null )
return;
customDefaultsSources.remove( folder );
}
private static void reSetLookAndFeel() {
EventQueue.invokeLater( () -> {
LookAndFeel lookAndFeel = UIManager.getLookAndFeel();
@@ -612,6 +702,18 @@ public abstract class FlatLaf
MnemonicHandler.showMnemonics( false, null );
}
// do not allow overriding to avoid issues in FlatUIUtils.createSharedUI()
@Override
public final boolean equals( Object obj ) {
return super.equals( obj );
}
// do not allow overriding to avoid issues in FlatUIUtils.createSharedUI()
@Override
public final int hashCode() {
return super.hashCode();
}
//---- class ActiveFont ---------------------------------------------------
private static class ActiveFont

View File

@@ -531,6 +531,7 @@ public class IntelliJTheme
uiKeyMapping.put( "Slider.trackWidth", "" ); // ignore (used in Material Theme UI Lite)
// TitlePane
uiKeyCopying.put( "TitlePane.inactiveBackground", "TitlePane.background" );
uiKeyMapping.put( "TitlePane.infoForeground", "TitlePane.foreground" );
uiKeyMapping.put( "TitlePane.inactiveInfoForeground", "TitlePane.inactiveForeground" );

View File

@@ -19,14 +19,18 @@ package com.formdev.flatlaf;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Insets;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
import java.util.function.Function;
import java.util.logging.Level;
@@ -115,6 +119,46 @@ class UIDefaultsLoader
addonClassLoaders.add( addonClassLoader );
}
// load custom properties files (usually provides by applications)
List<Object> customDefaultsSources = FlatLaf.getCustomDefaultsSources();
int size = (customDefaultsSources != null) ? customDefaultsSources.size() : 0;
for( int i = 0; i < size; i++ ) {
Object source = customDefaultsSources.get( i );
if( source instanceof String && i + 1 < size ) {
// load from package in classloader
String packageName = (String) source;
ClassLoader classLoader = (ClassLoader) customDefaultsSources.get( ++i );
// use class loader also for instantiating classes specified in values
if( classLoader != null && !addonClassLoaders.contains( classLoader ) )
addonClassLoaders.add( classLoader );
packageName = packageName.replace( '.', '/' );
if( classLoader == null )
classLoader = FlatLaf.class.getClassLoader();
for( Class<?> lafClass : lafClasses ) {
String propertiesName = packageName + '/' + lafClass.getSimpleName() + ".properties";
try( InputStream in = classLoader.getResourceAsStream( propertiesName ) ) {
if( in != null )
properties.load( in );
}
}
} else if( source instanceof File ) {
// load from folder
File folder = (File) source;
for( Class<?> lafClass : lafClasses ) {
File propertiesFile = new File( folder, lafClass.getSimpleName() + ".properties" );
if( !propertiesFile.isFile() )
continue;
try( InputStream in = new FileInputStream( propertiesFile ) ) {
properties.load( in );
}
}
}
}
// add additional defaults
if( additionalDefaults != null )
properties.putAll( additionalDefaults );
@@ -154,6 +198,29 @@ class UIDefaultsLoader
}
}
// get (and remove) globals, which override all other defaults that end with same suffix
HashMap<String, String> globals = new HashMap<>();
Iterator<Entry<Object, Object>> it = properties.entrySet().iterator();
while( it.hasNext() ) {
Entry<Object, Object> e = it.next();
String key = (String) e.getKey();
if( key.startsWith( GLOBAL_PREFIX ) ) {
globals.put( key.substring( GLOBAL_PREFIX.length() ), (String) e.getValue() );
it.remove();
}
}
// override UI defaults with globals
for( Object okey : defaults.keySet() ) {
if( okey instanceof String && ((String)okey).contains( "." ) ) {
String key = (String) okey;
String globalKey = key.substring( key.lastIndexOf( '.' ) + 1 );
String globalValue = globals.get( globalKey );
if( globalValue != null && !properties.containsKey( key ) )
properties.put( key, globalValue );
}
}
Function<String, String> propertiesGetter = key -> {
return properties.getProperty( key );
};
@@ -161,37 +228,10 @@ class UIDefaultsLoader
return resolveValue( value, propertiesGetter );
};
// get globals, which override all other defaults that end with same suffix
HashMap<String, Object> globals = new HashMap<>();
// parse and add properties to UI defaults
for( Map.Entry<Object, Object> e : properties.entrySet() ) {
String key = (String) e.getKey();
if( !key.startsWith( GLOBAL_PREFIX ) )
continue;
String value = resolveValue( (String) e.getValue(), propertiesGetter );
try {
globals.put( key.substring( GLOBAL_PREFIX.length() ),
parseValue( key, value, null, resolver, addonClassLoaders ) );
} catch( RuntimeException ex ) {
logParseError( Level.SEVERE, key, value, ex );
}
}
// override UI defaults with globals
for( Object key : defaults.keySet() ) {
if( key instanceof String && ((String)key).contains( "." ) ) {
String skey = (String) key;
String globalKey = skey.substring( skey.lastIndexOf( '.' ) + 1 );
Object globalValue = globals.get( globalKey );
if( globalValue != null )
defaults.put( key, globalValue );
}
}
// add non-global properties to UI defaults
for( Map.Entry<Object, Object> e : properties.entrySet() ) {
String key = (String) e.getKey();
if( key.startsWith( VARIABLE_PREFIX ) || key.startsWith( GLOBAL_PREFIX ) )
if( key.startsWith( VARIABLE_PREFIX ) )
continue;
String value = resolveValue( (String) e.getValue(), propertiesGetter );

View File

@@ -67,8 +67,11 @@ import com.formdev.flatlaf.util.UIScale;
* @uiDefault Button.focusedBackground Color optional
* @uiDefault Button.hoverBackground Color optional
* @uiDefault Button.pressedBackground Color optional
* @uiDefault Button.selectedBackground Color
* @uiDefault Button.selectedForeground Color
* @uiDefault Button.disabledBackground Color optional
* @uiDefault Button.disabledText Color
* @uiDefault Button.disabledSelectedBackground Color
* @uiDefault Button.default.background Color
* @uiDefault Button.default.startBackground Color optional; if set, a gradient paint is used and Button.default.background is ignored
* @uiDefault Button.default.endBackground Color optional; if set, a gradient paint is used
@@ -84,6 +87,7 @@ import com.formdev.flatlaf.util.UIScale;
* @uiDefault Button.toolbar.spacingInsets Insets
* @uiDefault Button.toolbar.hoverBackground Color
* @uiDefault Button.toolbar.pressedBackground Color
* @uiDefault Button.toolbar.selectedBackground Color
*
* @author Karl Tauber
*/
@@ -101,8 +105,11 @@ public class FlatButtonUI
protected Color focusedBackground;
protected Color hoverBackground;
protected Color pressedBackground;
protected Color selectedBackground;
protected Color selectedForeground;
protected Color disabledBackground;
protected Color disabledText;
protected Color disabledSelectedBackground;
protected Color defaultBackground;
protected Color defaultEndBackground;
@@ -119,17 +126,14 @@ public class FlatButtonUI
protected Insets toolbarSpacingInsets;
protected Color toolbarHoverBackground;
protected Color toolbarPressedBackground;
protected Color toolbarSelectedBackground;
private Icon helpButtonIcon;
private boolean defaults_initialized = false;
private static ComponentUI instance;
public static ComponentUI createUI( JComponent c ) {
if( instance == null )
instance = new FlatButtonUI();
return instance;
return FlatUIUtils.createSharedUI( FlatButtonUI.class, FlatButtonUI::new );
}
@Override
@@ -150,8 +154,11 @@ public class FlatButtonUI
focusedBackground = UIManager.getColor( prefix + "focusedBackground" );
hoverBackground = UIManager.getColor( prefix + "hoverBackground" );
pressedBackground = UIManager.getColor( prefix + "pressedBackground" );
selectedBackground = UIManager.getColor( prefix + "selectedBackground" );
selectedForeground = UIManager.getColor( prefix + "selectedForeground" );
disabledBackground = UIManager.getColor( prefix + "disabledBackground" );
disabledText = UIManager.getColor( prefix + "disabledText" );
disabledSelectedBackground = UIManager.getColor( prefix + "disabledSelectedBackground" );
if( UIManager.getBoolean( "Button.paintShadow" ) ) {
shadowWidth = FlatUIUtils.getUIInt( "Button.shadowWidth", 2 );
@@ -174,6 +181,7 @@ public class FlatButtonUI
toolbarSpacingInsets = UIManager.getInsets( "Button.toolbar.spacingInsets" );
toolbarHoverBackground = UIManager.getColor( prefix + "toolbar.hoverBackground" );
toolbarPressedBackground = UIManager.getColor( prefix + "toolbar.pressedBackground" );
toolbarSelectedBackground = UIManager.getColor( prefix + "toolbar.selectedBackground" );
helpButtonIcon = UIManager.getIcon( "HelpButton.icon" );
@@ -369,6 +377,17 @@ public class FlatButtonUI
}
protected Color getBackground( JComponent c ) {
if( ((AbstractButton)c).isSelected() ) {
// in toolbar use same colors for disabled and enabled because
// we assume that toolbar icon is shown disabled
boolean toolBarButton = isToolBarButton( c );
return buttonStateColor( c,
toolBarButton ? toolbarSelectedBackground : selectedBackground,
toolBarButton ? toolbarSelectedBackground : disabledSelectedBackground,
null, null,
toolBarButton ? toolbarPressedBackground : pressedBackground );
}
if( !c.isEnabled() )
return disabledBackground;
@@ -430,6 +449,9 @@ public class FlatButtonUI
if( !c.isEnabled() )
return disabledText;
if( ((AbstractButton)c).isSelected() && !isToolBarButton( c ) )
return selectedForeground;
// use component foreground if explicitly set
Color fg = c.getForeground();
if( isCustomForeground( fg ) )

View File

@@ -42,12 +42,8 @@ import javax.swing.plaf.ComponentUI;
public class FlatCheckBoxUI
extends FlatRadioButtonUI
{
private static ComponentUI instance;
public static ComponentUI createUI( JComponent c ) {
if( instance == null )
instance = new FlatCheckBoxUI();
return instance;
return FlatUIUtils.createSharedUI( FlatCheckBoxUI.class, FlatCheckBoxUI::new );
}
@Override

View File

@@ -24,10 +24,12 @@ import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GraphicsConfiguration;
import java.awt.Insets;
import java.awt.LayoutManager;
import java.awt.Rectangle;
import java.awt.Shape;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
@@ -298,6 +300,10 @@ public class FlatComboBoxUI
protected void configureEditor() {
super.configureEditor();
// remove default text field border from editor
if( editor instanceof JTextField && ((JTextField)editor).getBorder() instanceof FlatTextBorder )
((JTextField)editor).setBorder( BorderFactory.createEmptyBorder() );
// explicitly make non-opaque
if( editor instanceof JComponent )
((JComponent)editor).setOpaque( false );
@@ -563,6 +569,17 @@ public class FlatComboBoxUI
// make popup wider if necessary
if( displayWidth > pw ) {
// limit popup width to screen width
GraphicsConfiguration gc = comboBox.getGraphicsConfiguration();
if( gc != null ) {
Rectangle screenBounds = gc.getBounds();
Insets screenInsets = Toolkit.getDefaultToolkit().getScreenInsets( gc );
displayWidth = Math.min( displayWidth, screenBounds.width - screenInsets.left - screenInsets.right );
} else {
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
displayWidth = Math.min( displayWidth, screenSize.width );
}
int diff = displayWidth - pw;
pw = displayWidth;

View File

@@ -57,4 +57,8 @@ public class FlatEmptyBorder
insets.bottom = scale( bottom );
return insets;
}
public Insets getUnscaledBorderInsets() {
return super.getBorderInsets();
}
}

View File

@@ -84,6 +84,8 @@ import javax.swing.plaf.basic.BasicInternalFrameUI;
public class FlatInternalFrameUI
extends BasicInternalFrameUI
{
protected FlatWindowResizer windowResizer;
public static ComponentUI createUI( JComponent c ) {
return new FlatInternalFrameUI( (JInternalFrame) c );
}
@@ -97,6 +99,18 @@ public class FlatInternalFrameUI
super.installUI( c );
LookAndFeel.installProperty( frame, "opaque", false );
windowResizer = createWindowResizer();
}
@Override
public void uninstallUI( JComponent c ) {
super.uninstallUI( c );
if( windowResizer != null ) {
windowResizer.uninstall();
windowResizer = null;
}
}
@Override
@@ -104,6 +118,10 @@ public class FlatInternalFrameUI
return new FlatInternalFrameTitlePane( w );
}
protected FlatWindowResizer createWindowResizer() {
return new FlatWindowResizer.InternalFrameResizer( frame, this::getDesktopManager );
}
//---- class FlatInternalFrameBorder --------------------------------------
public static class FlatInternalFrameBorder

View File

@@ -56,12 +56,8 @@ public class FlatLabelUI
private boolean defaults_initialized = false;
private static ComponentUI instance;
public static ComponentUI createUI( JComponent c ) {
if( instance == null )
instance = new FlatLabelUI();
return instance;
return FlatUIUtils.createSharedUI( FlatLabelUI.class, FlatLabelUI::new );
}
@Override

View File

@@ -126,6 +126,9 @@ public class FlatListUI
* or the application has to be changed to extend a FlatLaf renderer.
*/
private void toggleSelectionColors() {
if( list == null )
return;
if( FlatUIUtils.isPermanentFocusOwner( list ) ) {
if( list.getSelectionBackground() == selectionInactiveBackground )
list.setSelectionBackground( selectionBackground );

View File

@@ -35,11 +35,7 @@ import javax.swing.plaf.basic.BasicPanelUI;
public class FlatPanelUI
extends BasicPanelUI
{
private static ComponentUI instance;
public static ComponentUI createUI( JComponent c ) {
if( instance == null )
instance = new FlatPanelUI();
return instance;
return FlatUIUtils.createSharedUI( FlatPanelUI.class, FlatPanelUI::new );
}
}

View File

@@ -60,6 +60,7 @@ import com.formdev.flatlaf.util.HiDPIUtils;
* @uiDefault Component.minimumWidth int
* @uiDefault Component.isIntelliJTheme boolean
* @uiDefault PasswordField.placeholderForeground Color
* @uiDefault PasswordField.showCapsLock boolean
* @uiDefault PasswordField.capsLockIcon Icon
* @uiDefault TextComponent.selectAllOnFocusPolicy String never, once (default) or always
*
@@ -71,6 +72,7 @@ public class FlatPasswordFieldUI
protected int minimumWidth;
protected boolean isIntelliJTheme;
protected Color placeholderForeground;
protected boolean showCapsLock;
protected Icon capsLockIcon;
private FocusListener focusListener;
@@ -88,6 +90,7 @@ public class FlatPasswordFieldUI
minimumWidth = UIManager.getInt( "Component.minimumWidth" );
isIntelliJTheme = UIManager.getBoolean( "Component.isIntelliJTheme" );
placeholderForeground = UIManager.getColor( prefix + ".placeholderForeground" );
showCapsLock = UIManager.getBoolean( "PasswordField.showCapsLock" );
capsLockIcon = UIManager.getIcon( "PasswordField.capsLockIcon" );
LookAndFeel.installProperty( getComponent(), "opaque", false );
@@ -160,6 +163,9 @@ public class FlatPasswordFieldUI
}
protected void paintCapsLock( Graphics g ) {
if( !showCapsLock )
return;
JTextComponent c = getComponent();
if( !FlatUIUtils.isPermanentFocusOwner( c ) ||
!Toolkit.getDefaultToolkit().getLockingKeyState( KeyEvent.VK_CAPS_LOCK ) )

View File

@@ -21,6 +21,7 @@ import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.MouseInfo;
import java.awt.Panel;
import java.awt.Point;
import java.awt.Rectangle;
@@ -33,6 +34,7 @@ import javax.swing.JComponent;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
import javax.swing.JToolTip;
import javax.swing.JWindow;
import javax.swing.Popup;
import javax.swing.PopupFactory;
import javax.swing.RootPaneContainer;
@@ -41,6 +43,7 @@ import javax.swing.UIManager;
import javax.swing.border.Border;
import com.formdev.flatlaf.FlatClientProperties;
import com.formdev.flatlaf.util.SystemInfo;
import com.formdev.flatlaf.util.UIScale;
/**
* A popup factory that adds drop shadows to popups on Windows.
@@ -59,19 +62,97 @@ public class FlatPopupFactory
public Popup getPopup( Component owner, Component contents, int x, int y )
throws IllegalArgumentException
{
Point pt = fixToolTipLocation( owner, contents, x, y );
if( pt != null ) {
x = pt.x;
y = pt.y;
}
if( !isDropShadowPainted( owner, contents ) )
return new NonFlashingPopup( super.getPopup( owner, contents, x, y ), contents );
return new NonFlashingPopup( getPopupForScreenOfOwner( owner, contents, x, y, false ), contents );
// macOS and Linux adds drop shadow to heavy weight popups
if( SystemInfo.isMacOS || SystemInfo.isLinux ) {
Popup popup = getHeavyWeightPopup( owner, contents, x, y );
Popup popup = getPopupForScreenOfOwner( owner, contents, x, y, true );
if( popup == null )
popup = super.getPopup( owner, contents, x, y );
popup = getPopupForScreenOfOwner( owner, contents, x, y, false );
return new NonFlashingPopup( popup, contents );
}
// create drop shadow popup
return new DropShadowPopup( super.getPopup( owner, contents, x, y ), owner, contents );
return new DropShadowPopup( getPopupForScreenOfOwner( owner, contents, x, y, false ), owner, contents );
}
/**
* Creates a popup for the screen that the owner component is on.
* <p>
* PopupFactory caches heavy weight popup windows and reuses them.
* On a dual screen setup, if the popup owner has moved from one screen to the other one,
* then the cached heavy weight popup window may be connected to the wrong screen.
* If the two screens use different scaling factors, then the popup location and size
* is scaled when the popup becomes visible, which shows the popup in the wrong location
* (or on wrong screen). The re-scaling is done in WWindowPeer.setBounds() (Java 9+).
* <p>
* To fix this, dispose popup windows that are on wrong screen and get new popup.
* <p>
* This is a workaround for https://bugs.openjdk.java.net/browse/JDK-8224608
*/
private Popup getPopupForScreenOfOwner( Component owner, Component contents, int x, int y, boolean forceHeavyWeight )
throws IllegalArgumentException
{
int count = 0;
for(;;) {
// create new or get cached popup
Popup popup = forceHeavyWeight
? getHeavyWeightPopup( owner, contents, x, y )
: super.getPopup( owner, contents, x, y );
// get heavy weight popup window; is null for non-heavy weight popup
Window popupWindow = SwingUtilities.windowForComponent( contents );
// check whether heavy weight popup window is on same screen as owner component
if( popupWindow == null ||
popupWindow.getGraphicsConfiguration() == owner.getGraphicsConfiguration() )
return popup;
// remove contents component from popup window
if( popupWindow instanceof JWindow )
((JWindow)popupWindow).getContentPane().removeAll();
// dispose unused popup
// (do not invoke popup.hide() because this would cache the popup window)
popupWindow.dispose();
// avoid endless loop (should newer happen; PopupFactory cache size is 5)
if( ++count > 10 )
return popup;
}
}
/**
* Shows the given popup and, if necessary, fixes the location of a heavy weight popup window.
* <p>
* On a dual screen setup, where screens use different scale factors, it may happen
* that the window location changes when showing a heavy weight popup window.
* E.g. when opening an dialog on the secondary screen and making combobox popup visible.
* <p>
* This is a workaround for https://bugs.openjdk.java.net/browse/JDK-8224608
*/
private static void showPopupAndFixLocation( Popup popup, Window popupWindow ) {
if( popupWindow != null ) {
// remember location of heavy weight popup window
int x = popupWindow.getX();
int y = popupWindow.getY();
popup.show();
// restore popup window location if it has changed
// (probably scaled when screens use different scale factors)
if( popupWindow.getX() != x || popupWindow.getY() != y )
popupWindow.setLocation( x, y );
} else
popup.show();
}
private boolean isDropShadowPainted( Component owner, Component contents ) {
@@ -127,6 +208,31 @@ public class FlatPopupFactory
}
}
/**
* Usually ToolTipManager places a tooltip at (mouseLocation.x, mouseLocation.y + 20).
* In case that the tooltip would be partly outside of the screen,
* ToolTipManagerthe changes the location so that the entire tooltip fits on screen.
* But this can place the tooltip under the mouse location and hide the owner component.
* <p>
* This method checks whether the current mouse location is within tooltip bounds
* and corrects the y-location so that the tooltip is placed above the mouse location.
*/
private Point fixToolTipLocation( Component owner, Component contents, int x, int y ) {
if( !(contents instanceof JToolTip) )
return null;
Point mouseLocation = MouseInfo.getPointerInfo().getLocation();
Dimension tipSize = contents.getPreferredSize();
// check whether mouse location is within tooltip bounds
Rectangle tipBounds = new Rectangle( x, y, tipSize.width, tipSize.height );
if( !tipBounds.contains( mouseLocation ) )
return null;
// place tooltip above mouse location
return new Point( x, mouseLocation.y - tipSize.height - UIScale.scale( 20 ) );
}
//---- class NonFlashingPopup ---------------------------------------------
private class NonFlashingPopup
@@ -157,7 +263,7 @@ public class FlatPopupFactory
@Override
public void show() {
if( delegate != null ) {
delegate.show();
showPopupAndFixLocation( delegate, popupWindow );
// increase tooltip size if necessary because it may be too small on HiDPI screens
// https://bugs.openjdk.java.net/browse/JDK-8213535
@@ -249,7 +355,7 @@ public class FlatPopupFactory
// create heavy weight popup for drop shadow
int x = popupWindow.getX() - insets.left;
int y = popupWindow.getY() - insets.top;
dropShadowDelegate = getHeavyWeightPopup( owner, dropShadowPanel, x, y );
dropShadowDelegate = getPopupForScreenOfOwner( owner, dropShadowPanel, x, y, true );
// make drop shadow popup window translucent
dropShadowWindow = SwingUtilities.windowForComponent( dropShadowPanel );
@@ -291,7 +397,7 @@ public class FlatPopupFactory
@Override
public void show() {
if( dropShadowDelegate != null )
dropShadowDelegate.show();
showPopupAndFixLocation( dropShadowDelegate, dropShadowWindow );
if( mediumWeightPanel != null )
showMediumWeightDropShadow();

View File

@@ -38,12 +38,8 @@ import javax.swing.plaf.ComponentUI;
public class FlatPopupMenuSeparatorUI
extends FlatSeparatorUI
{
private static ComponentUI instance;
public static ComponentUI createUI( JComponent c ) {
if( instance == null )
instance = new FlatPopupMenuSeparatorUI();
return instance;
return FlatUIUtils.createSharedUI( FlatPopupMenuSeparatorUI.class, FlatPopupMenuSeparatorUI::new );
}
@Override

View File

@@ -60,12 +60,8 @@ public class FlatRadioButtonUI
private boolean defaults_initialized = false;
private static ComponentUI instance;
public static ComponentUI createUI( JComponent c ) {
if( instance == null )
instance = new FlatRadioButtonUI();
return instance;
return FlatUIUtils.createSharedUI( FlatRadioButtonUI.class, FlatRadioButtonUI::new );
}
@Override

View File

@@ -172,7 +172,7 @@ public class FlatRootPaneUI
}
protected FlatWindowResizer createWindowResizer() {
return new FlatWindowResizer( rootPane );
return new FlatWindowResizer.WindowResizer( rootPane );
}
protected FlatTitlePane createTitlePane() {

View File

@@ -52,12 +52,8 @@ public class FlatSeparatorUI
private boolean defaults_initialized = false;
private static ComponentUI instance;
public static ComponentUI createUI( JComponent c ) {
if( instance == null )
instance = new FlatSeparatorUI();
return instance;
return FlatUIUtils.createSharedUI( FlatSeparatorUI.class, FlatSeparatorUI::new );
}
@Override

View File

@@ -268,31 +268,34 @@ public class FlatSpinnerUI
int width = c.getWidth();
int height = c.getHeight();
Component nextButton = getHandler().nextButton;
int arrowX = nextButton.getX();
int arrowWidth = nextButton.getWidth();
boolean paintButton = !"none".equals( buttonStyle );
boolean enabled = spinner.isEnabled();
boolean isLeftToRight = spinner.getComponentOrientation().isLeftToRight();
// paint background
g2.setColor( getBackground( enabled ) );
FlatUIUtils.paintComponentBackground( g2, 0, 0, width, height, focusWidth, arc );
// paint arrow buttons background
if( paintButton && enabled ) {
g2.setColor( buttonBackground );
Shape oldClip = g2.getClip();
if( isLeftToRight )
g2.clipRect( arrowX, 0, width - arrowX, height );
else
g2.clipRect( 0, 0, arrowX + arrowWidth, height );
FlatUIUtils.paintComponentBackground( g2, 0, 0, width, height, focusWidth, arc );
g2.setClip( oldClip );
}
// paint button background and separator
boolean paintButton = !"none".equals( buttonStyle );
Handler handler = getHandler();
if( paintButton && (handler.nextButton != null || handler.previousButton != null) ) {
Component button = (handler.nextButton != null) ? handler.nextButton : handler.previousButton;
int arrowX = button.getX();
int arrowWidth = button.getWidth();
boolean isLeftToRight = spinner.getComponentOrientation().isLeftToRight();
// paint vertical line between value and arrow buttons
if( paintButton ) {
// paint arrow buttons background
if( enabled ) {
g2.setColor( buttonBackground );
Shape oldClip = g2.getClip();
if( isLeftToRight )
g2.clipRect( arrowX, 0, width - arrowX, height );
else
g2.clipRect( 0, 0, arrowX + arrowWidth, height );
FlatUIUtils.paintComponentBackground( g2, 0, 0, width, height, focusWidth, arc );
g2.setClip( oldClip );
}
// paint vertical line between value and arrow buttons
g2.setColor( enabled ? borderColor : disabledBorderColor );
float lw = scale( 1f );
float lx = isLeftToRight ? arrowX : arrowX + arrowWidth - lw;
@@ -359,7 +362,7 @@ public class FlatSpinnerUI
if( nextButton == null && previousButton == null ) {
if( editor != null )
editor.setBounds( r );
editor.setBounds( FlatUIUtils.subtractInsets( r, padding ) );
return;
}

View File

@@ -196,6 +196,7 @@ public class FlatTabbedPaneUI
switch( e.getPropertyName() ) {
case TABBED_PANE_SHOW_TAB_SEPARATORS:
case TABBED_PANE_SHOW_CONTENT_SEPARATOR:
case TABBED_PANE_HAS_FULL_BORDER:
case TABBED_PANE_TAB_HEIGHT:
tabPane.revalidate();
@@ -255,6 +256,9 @@ public class FlatTabbedPaneUI
*/
@Override
protected Insets getContentBorderInsets( int tabPlacement ) {
if( contentSeparatorHeight == 0 || !clientPropertyBoolean( tabPane, TABBED_PANE_SHOW_CONTENT_SEPARATOR, true ) )
return new Insets( 0, 0, 0, 0 );
boolean hasFullBorder = clientPropertyBoolean( tabPane, TABBED_PANE_HAS_FULL_BORDER, this.hasFullBorder );
int sh = scale( contentSeparatorHeight );
Insets insets = hasFullBorder ? new Insets( sh, sh, sh, sh ) : new Insets( sh, 0, 0, 0 );
@@ -359,7 +363,10 @@ public class FlatTabbedPaneUI
protected void paintTabSelection( Graphics g, int tabPlacement, int x, int y, int w, int h ) {
// increase clip bounds in scroll-tab-layout to paint over the separator line
Rectangle clipBounds = isScrollTabLayout() ? g.getClipBounds() : null;
if( clipBounds != null ) {
if( clipBounds != null &&
this.contentSeparatorHeight != 0 &&
clientPropertyBoolean( tabPane, TABBED_PANE_SHOW_CONTENT_SEPARATOR, true ) )
{
Rectangle newClipBounds = new Rectangle( clipBounds );
int contentSeparatorHeight = scale( this.contentSeparatorHeight );
switch( tabPlacement ) {
@@ -436,43 +443,49 @@ public class FlatTabbedPaneUI
// remove tabs from bounds
switch( tabPlacement ) {
case LEFT:
x += calculateTabAreaWidth( tabPlacement, runCount, maxTabWidth );
if( tabsOverlapBorder )
x -= tabAreaInsets.right;
w -= (x - insets.left);
break;
case RIGHT:
w -= calculateTabAreaWidth( tabPlacement, runCount, maxTabWidth );
if( tabsOverlapBorder )
w += tabAreaInsets.left;
break;
case BOTTOM:
h -= calculateTabAreaHeight( tabPlacement, runCount, maxTabHeight );
if( tabsOverlapBorder )
h += tabAreaInsets.top;
break;
case TOP:
default:
y += calculateTabAreaHeight( tabPlacement, runCount, maxTabHeight );
if( tabsOverlapBorder )
y -= tabAreaInsets.bottom;
h -= (y - insets.top);
break;
case BOTTOM:
h -= calculateTabAreaHeight( tabPlacement, runCount, maxTabHeight );
if( tabsOverlapBorder )
h += tabAreaInsets.top;
break;
case LEFT:
x += calculateTabAreaWidth( tabPlacement, runCount, maxTabWidth );
if( tabsOverlapBorder )
x -= tabAreaInsets.right;
w -= (x - insets.left);
break;
case RIGHT:
w -= calculateTabAreaWidth( tabPlacement, runCount, maxTabWidth );
if( tabsOverlapBorder )
w += tabAreaInsets.left;
break;
}
// compute insets for separator or full border
boolean hasFullBorder = clientPropertyBoolean( tabPane, TABBED_PANE_HAS_FULL_BORDER, this.hasFullBorder );
int sh = scale( contentSeparatorHeight * 100 ); // multiply by 100 because rotateInsets() does not use floats
Insets ci = new Insets( 0, 0, 0, 0 );
rotateInsets( hasFullBorder ? new Insets( sh, sh, sh, sh ) : new Insets( sh, 0, 0, 0 ), ci, tabPlacement );
if( contentSeparatorHeight != 0 && clientPropertyBoolean( tabPane, TABBED_PANE_SHOW_CONTENT_SEPARATOR, true ) ) {
// compute insets for separator or full border
boolean hasFullBorder = clientPropertyBoolean( tabPane, TABBED_PANE_HAS_FULL_BORDER, this.hasFullBorder );
int sh = scale( contentSeparatorHeight * 100 ); // multiply by 100 because rotateInsets() does not use floats
Insets ci = new Insets( 0, 0, 0, 0 );
rotateInsets( hasFullBorder ? new Insets( sh, sh, sh, sh ) : new Insets( sh, 0, 0, 0 ), ci, tabPlacement );
// paint content area
g.setColor( contentAreaColor );
Path2D path = new Path2D.Float( Path2D.WIND_EVEN_ODD );
path.append( new Rectangle2D.Float( x, y, w, h ), false );
path.append( new Rectangle2D.Float( x + (ci.left / 100f), y + (ci.top / 100f),
w - (ci.left / 100f) - (ci.right / 100f), h - (ci.top / 100f) - (ci.bottom / 100f) ), false );
((Graphics2D)g).fill( path );
// paint content separator or full border
g.setColor( contentAreaColor );
Path2D path = new Path2D.Float( Path2D.WIND_EVEN_ODD );
path.append( new Rectangle2D.Float( x, y, w, h ), false );
path.append( new Rectangle2D.Float( x + (ci.left / 100f), y + (ci.top / 100f),
w - (ci.left / 100f) - (ci.right / 100f), h - (ci.top / 100f) - (ci.bottom / 100f) ), false );
((Graphics2D)g).fill( path );
}
// repaint selection in scroll-tab-layout because it may be painted before
// the content border was painted (from BasicTabbedPaneUI$ScrollableTabPanel)

View File

@@ -158,7 +158,7 @@ public class FlatTableHeaderUI
g2.setColor( separatorColor );
int sepCount = columnCount;
if( header.getTable().getAutoResizeMode() != JTable.AUTO_RESIZE_OFF && !isVerticalScrollBarVisible() )
if( header.getTable() != null && header.getTable().getAutoResizeMode() != JTable.AUTO_RESIZE_OFF && !isVerticalScrollBarVisible() )
sepCount--;
if( header.getComponentOrientation().isLeftToRight() ) {

View File

@@ -188,6 +188,9 @@ public class FlatTableUI
* or the application has to be changed to extend a FlatLaf renderer.
*/
private void toggleSelectionColors() {
if( table == null )
return;
if( FlatUIUtils.isPermanentFocusOwner( table ) ) {
if( table.getSelectionBackground() == selectionInactiveBackground )
table.setSelectionBackground( selectionBackground );

View File

@@ -60,6 +60,7 @@ public class FlatTextAreaUI
{
protected int minimumWidth;
protected boolean isIntelliJTheme;
protected Color background;
protected Color disabledBackground;
protected Color inactiveBackground;
@@ -67,12 +68,20 @@ public class FlatTextAreaUI
return new FlatTextAreaUI();
}
@Override
public void installUI( JComponent c ) {
super.installUI( c );
updateBackground();
}
@Override
protected void installDefaults() {
super.installDefaults();
minimumWidth = UIManager.getInt( "Component.minimumWidth" );
isIntelliJTheme = UIManager.getBoolean( "Component.isIntelliJTheme" );
background = UIManager.getColor( "TextArea.background" );
disabledBackground = UIManager.getColor( "TextArea.disabledBackground" );
inactiveBackground = UIManager.getColor( "TextArea.inactiveBackground" );
}
@@ -81,6 +90,7 @@ public class FlatTextAreaUI
protected void uninstallDefaults() {
super.uninstallDefaults();
background = null;
disabledBackground = null;
inactiveBackground = null;
}
@@ -89,26 +99,36 @@ public class FlatTextAreaUI
protected void propertyChange( PropertyChangeEvent e ) {
super.propertyChange( e );
FlatEditorPaneUI.propertyChange( getComponent(), e );
switch( e.getPropertyName() ) {
case "editable":
case "enabled":
updateBackground();
break;
}
}
@Override
protected void paintSafely( Graphics g ) {
super.paintSafely( HiDPIUtils.createGraphicsTextYCorrection( (Graphics2D) g ) );
}
@Override
protected void paintBackground( Graphics g ) {
private void updateBackground() {
JTextComponent c = getComponent();
Color background = c.getBackground();
g.setColor( !(background instanceof UIResource)
? background
: (isIntelliJTheme && (!c.isEnabled() || !c.isEditable())
? FlatUIUtils.getParentBackground( c )
: (!c.isEnabled()
? disabledBackground
: (!c.isEditable() ? inactiveBackground : background))) );
g.fillRect( 0, 0, c.getWidth(), c.getHeight() );
if( !(background instanceof UIResource) )
return;
// do not update background if it currently has a unknown color (assigned from outside)
if( background != this.background &&
background != disabledBackground &&
background != inactiveBackground )
return;
Color newBackground = !c.isEnabled()
? disabledBackground
: (!c.isEditable()
? inactiveBackground
: this.background);
if( newBackground != background )
c.setBackground( newBackground );
}
@Override
@@ -128,4 +148,22 @@ public class FlatTextAreaUI
return FlatEditorPaneUI.applyMinimumWidth( c, size, minimumWidth );
}
@Override
protected void paintSafely( Graphics g ) {
super.paintSafely( HiDPIUtils.createGraphicsTextYCorrection( (Graphics2D) g ) );
}
@Override
protected void paintBackground( Graphics g ) {
JTextComponent c = getComponent();
// for compatibility with IntelliJ themes
if( isIntelliJTheme && (!c.isEnabled() || !c.isEditable()) && (c.getBackground() instanceof UIResource) ) {
FlatUIUtils.paintParentBackground( g, c );
return;
}
super.paintBackground( g );
}
}

View File

@@ -240,12 +240,15 @@ public class FlatTitlePane
protected void activeChanged( boolean active ) {
boolean hasEmbeddedMenuBar = rootPane.getJMenuBar() != null && isMenuBarEmbedded();
Color background = FlatUIUtils.nonUIResource( active ? activeBackground : inactiveBackground );
Color foreground = FlatUIUtils.nonUIResource( active
? (hasEmbeddedMenuBar ? embeddedForeground : activeForeground)
: inactiveForeground );
Color foreground = FlatUIUtils.nonUIResource( active ? activeForeground : inactiveForeground );
Color titleForeground = (hasEmbeddedMenuBar && active) ? FlatUIUtils.nonUIResource( embeddedForeground ) : foreground;
setBackground( background );
titleLabel.setForeground( foreground );
titleLabel.setForeground( titleForeground );
iconifyButton.setForeground( foreground );
maximizeButton.setForeground( foreground );
restoreButton.setForeground( foreground );
closeButton.setForeground( foreground );
titleLabel.setHorizontalAlignment( hasEmbeddedMenuBar ? SwingConstants.CENTER : SwingConstants.LEADING );
@@ -751,8 +754,7 @@ debug*/
//---- interface MouseListener ----
private int lastXOnScreen;
private int lastYOnScreen;
private Point dragOffset;
@Override
public void mouseClicked( MouseEvent e ) {
@@ -776,8 +778,10 @@ debug*/
@Override
public void mousePressed( MouseEvent e ) {
lastXOnScreen = e.getXOnScreen();
lastYOnScreen = e.getYOnScreen();
if( window == null )
return; // should newer occur
dragOffset = SwingUtilities.convertPoint( FlatTitlePane.this, e.getPoint(), window );
}
@Override public void mouseReleased( MouseEvent e ) {}
@@ -788,46 +792,45 @@ debug*/
@Override
public void mouseDragged( MouseEvent e ) {
if( window == null )
return; // should newer occur
if( hasJBRCustomDecoration() )
return; // do nothing if running in JBR
int xOnScreen = e.getXOnScreen();
int yOnScreen = e.getYOnScreen();
if( lastXOnScreen == xOnScreen && lastYOnScreen == yOnScreen )
return;
// restore window if it is maximized
if( window instanceof Frame ) {
Frame frame = (Frame) window;
int state = frame.getExtendedState();
if( (state & Frame.MAXIMIZED_BOTH) != 0 ) {
int maximizedX = window.getX();
int maximizedY = window.getY();
int maximizedWidth = window.getWidth();
// restore window size, which also moves window to pre-maximized location
frame.setExtendedState( state & ~Frame.MAXIMIZED_BOTH );
// fix drag offset to ensure that window remains under mouse position
// for the case that dragging starts in the right area of the maximized window
int restoredWidth = window.getWidth();
int newX = maximizedX;
JComponent rightComp = getComponentOrientation().isLeftToRight() ? buttonPanel : leftPanel;
if( xOnScreen >= maximizedX + restoredWidth - rightComp.getWidth() - 10 )
newX = xOnScreen + rightComp.getWidth() + 10 - restoredWidth;
// move window near mouse
window.setLocation( newX, maximizedY );
return;
int center = restoredWidth / 2;
if( dragOffset.x > center ) {
// this is same/similar to what Windows 10 does
if( dragOffset.x > maximizedWidth - center )
dragOffset.x = restoredWidth - (maximizedWidth - dragOffset.x);
else
dragOffset.x = center;
}
}
}
// compute new window location
int newX = window.getX() + (xOnScreen - lastXOnScreen);
int newY = window.getY() + (yOnScreen - lastYOnScreen);
int newX = e.getXOnScreen() - dragOffset.x;
int newY = e.getYOnScreen() - dragOffset.y;
if( newX == window.getX() && newY == window.getY() )
return;
// move window
window.setLocation( newX, newY );
lastXOnScreen = xOnScreen;
lastYOnScreen = yOnScreen;
}
@Override public void mouseMoved( MouseEvent e ) {}

View File

@@ -22,7 +22,6 @@ import java.awt.Component;
import java.awt.Graphics;
import java.beans.PropertyChangeEvent;
import javax.swing.AbstractButton;
import javax.swing.ButtonModel;
import javax.swing.JComponent;
import javax.swing.JToggleButton;
import javax.swing.UIManager;
@@ -50,18 +49,17 @@ import com.formdev.flatlaf.util.UIScale;
* @uiDefault ToggleButton.startBackground Color optional; if set, a gradient paint is used and ToggleButton.background is ignored
* @uiDefault ToggleButton.endBackground Color optional; if set, a gradient paint is used
* @uiDefault ToggleButton.pressedBackground Color
* @uiDefault ToggleButton.disabledBackground Color optional
* @uiDefault ToggleButton.disabledText Color
* @uiDefault ToggleButton.toolbar.hoverBackground Color
* @uiDefault ToggleButton.toolbar.pressedBackground Color
*
* <!-- FlatToggleButtonUI -->
*
* @uiDefault ToggleButton.selectedBackground Color
* @uiDefault ToggleButton.selectedForeground Color
* @uiDefault ToggleButton.disabledBackground Color optional
* @uiDefault ToggleButton.disabledText Color
* @uiDefault ToggleButton.disabledSelectedBackground Color
* @uiDefault ToggleButton.toolbar.hoverBackground Color
* @uiDefault ToggleButton.toolbar.pressedBackground Color
* @uiDefault ToggleButton.toolbar.selectedBackground Color
*
* <!-- FlatToggleButtonUI -->
*
* @uiDefault ToggleButton.tab.underlineHeight int
* @uiDefault ToggleButton.tab.underlineColor Color
* @uiDefault ToggleButton.tab.disabledUnderlineColor Color
@@ -75,12 +73,6 @@ import com.formdev.flatlaf.util.UIScale;
public class FlatToggleButtonUI
extends FlatButtonUI
{
protected Color selectedBackground;
protected Color selectedForeground;
protected Color disabledSelectedBackground;
protected Color toolbarSelectedBackground;
protected int tabUnderlineHeight;
protected Color tabUnderlineColor;
protected Color tabDisabledUnderlineColor;
@@ -90,12 +82,8 @@ public class FlatToggleButtonUI
private boolean defaults_initialized = false;
private static ComponentUI instance;
public static ComponentUI createUI( JComponent c ) {
if( instance == null )
instance = new FlatToggleButtonUI();
return instance;
return FlatUIUtils.createSharedUI( FlatToggleButtonUI.class, FlatToggleButtonUI::new );
}
@Override
@@ -108,12 +96,6 @@ public class FlatToggleButtonUI
super.installDefaults( b );
if( !defaults_initialized ) {
selectedBackground = UIManager.getColor( "ToggleButton.selectedBackground" );
selectedForeground = UIManager.getColor( "ToggleButton.selectedForeground" );
disabledSelectedBackground = UIManager.getColor( "ToggleButton.disabledSelectedBackground" );
toolbarSelectedBackground = UIManager.getColor( "ToggleButton.toolbar.selectedBackground" );
tabUnderlineHeight = UIManager.getInt( "ToggleButton.tab.underlineHeight" );
tabUnderlineColor = UIManager.getColor( "ToggleButton.tab.underlineColor" );
tabDisabledUnderlineColor = UIManager.getColor( "ToggleButton.tab.disabledUnderlineColor" );
@@ -185,30 +167,4 @@ public class FlatToggleButtonUI
} else
super.paintBackground( g, c );
}
@Override
protected Color getBackground( JComponent c ) {
ButtonModel model = ((AbstractButton)c).getModel();
if( model.isSelected() ) {
// in toolbar use same colors for disabled and enabled because
// we assume that toolbar icon is shown disabled
boolean toolBarButton = isToolBarButton( c );
return buttonStateColor( c,
toolBarButton ? toolbarSelectedBackground : selectedBackground,
toolBarButton ? toolbarSelectedBackground : disabledSelectedBackground,
null, null,
toolBarButton ? toolbarPressedBackground : pressedBackground );
}
return super.getBackground( c );
}
@Override
protected Color getForeground( JComponent c ) {
if( c.isEnabled() && ((AbstractButton)c).isSelected() && !isToolBarButton( c ) )
return selectedForeground;
return super.getForeground( c );
}
}

View File

@@ -50,12 +50,8 @@ public class FlatToolBarSeparatorUI
private boolean defaults_initialized = false;
private static ComponentUI instance;
public static ComponentUI createUI( JComponent c ) {
if( instance == null )
instance = new FlatToolBarSeparatorUI();
return instance;
return FlatUIUtils.createSharedUI( FlatToolBarSeparatorUI.class, FlatToolBarSeparatorUI::new );
}
@Override

View File

@@ -52,12 +52,8 @@ public class FlatToolTipUI
{
private static PropertyChangeListener sharedPropertyChangedListener;
private static ComponentUI instance;
public static ComponentUI createUI( JComponent c ) {
if( instance == null )
instance = new FlatToolTipUI();
return instance;
return FlatUIUtils.createSharedUI( FlatToolTipUI.class, FlatToolTipUI::new );
}
@Override

View File

@@ -35,7 +35,10 @@ import java.awt.event.MouseEvent;
import java.awt.geom.Path2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
import java.util.IdentityHashMap;
import java.util.WeakHashMap;
import java.util.function.Consumer;
import java.util.function.Supplier;
import javax.swing.JComponent;
import javax.swing.JTable;
import javax.swing.LookAndFeel;
@@ -43,6 +46,7 @@ import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.border.Border;
import javax.swing.border.CompoundBorder;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.UIResource;
import com.formdev.flatlaf.FlatClientProperties;
import com.formdev.flatlaf.util.DerivedColor;
@@ -59,6 +63,8 @@ public class FlatUIUtils
{
public static final boolean MAC_USE_QUARTZ = Boolean.getBoolean( "apple.awt.graphics.UseQuartz" );
private static WeakHashMap<LookAndFeel, IdentityHashMap<Object, ComponentUI>> sharedUIinstances = new WeakHashMap<>();
public static Rectangle addInsets( Rectangle r, Insets insets ) {
return new Rectangle(
r.x - insets.left,
@@ -534,6 +540,19 @@ public class FlatUIUtils
return explicitlySet;
}
/**
* Creates a shared component UI for the given key and the current Laf.
* Each Laf instance has its own shared component UI instance.
* <p>
* This is for GUI builders that support Laf switching and
* may use multiple Laf instances at the same time.
*/
public static ComponentUI createSharedUI( Object key, Supplier<ComponentUI> newInstanceSupplier ) {
return sharedUIinstances
.computeIfAbsent( UIManager.getLookAndFeel(), k -> new IdentityHashMap<>() )
.computeIfAbsent( key, k -> newInstanceSupplier.get() );
}
//---- class HoverListener ------------------------------------------------
public static class HoverListener

View File

@@ -38,12 +38,8 @@ import javax.swing.plaf.basic.BasicViewportUI;
public class FlatViewportUI
extends BasicViewportUI
{
private static ComponentUI instance;
public static ComponentUI createUI( JComponent c ) {
if( instance == null )
instance = new FlatViewportUI();
return instance;
return FlatUIUtils.createSharedUI( FlatViewportUI.class, FlatViewportUI::new );
}
@Override

View File

@@ -17,11 +17,13 @@
package com.formdev.flatlaf.ui;
import static java.awt.Cursor.*;
import static javax.swing.SwingConstants.*;
import java.awt.Container;
import java.awt.Dialog;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.Window;
@@ -34,54 +36,59 @@ import java.awt.event.WindowEvent;
import java.awt.event.WindowStateListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.function.Supplier;
import javax.swing.DesktopManager;
import javax.swing.JComponent;
import javax.swing.JInternalFrame;
import javax.swing.JLayeredPane;
import javax.swing.JRootPane;
import javax.swing.UIManager;
import com.formdev.flatlaf.util.UIScale;
/**
* Resizes frames and dialogs.
* Resizes frames, dialogs or internal frames.
* <p>
* Could also be used to implement resize support for any Swing component
* by creating a new subclass.
*
* @author Karl Tauber
*/
public class FlatWindowResizer
implements PropertyChangeListener, WindowStateListener, ComponentListener
public abstract class FlatWindowResizer
implements PropertyChangeListener, ComponentListener
{
protected final static Integer WINDOW_RESIZER_LAYER = JLayeredPane.DRAG_LAYER + 1;
protected final JRootPane rootPane;
protected final JComponent resizeComp;
protected final int borderDragThickness = FlatUIUtils.getUIInt( "RootPane.borderDragThickness", 5 );
protected final int cornerDragWidth = FlatUIUtils.getUIInt( "RootPane.cornerDragWidth", 16 );
protected final boolean honorFrameMinimumSizeOnResize = UIManager.getBoolean( "RootPane.honorFrameMinimumSizeOnResize" );
protected final boolean honorDialogMinimumSizeOnResize = UIManager.getBoolean( "RootPane.honorDialogMinimumSizeOnResize" );
protected final JComponent north;
protected final JComponent south;
protected final JComponent west;
protected final JComponent east;
protected final DragBorderComponent topDragComp;
protected final DragBorderComponent bottomDragComp;
protected final DragBorderComponent leftDragComp;
protected final DragBorderComponent rightDragComp;
protected Window window;
protected FlatWindowResizer( JComponent resizeComp ) {
this.resizeComp = resizeComp;
public FlatWindowResizer( JRootPane rootPane ) {
this.rootPane = rootPane;
topDragComp = createDragBorderComponent( NW_RESIZE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR );
bottomDragComp = createDragBorderComponent( SW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR );
leftDragComp = createDragBorderComponent( NW_RESIZE_CURSOR, W_RESIZE_CURSOR, SW_RESIZE_CURSOR );
rightDragComp = createDragBorderComponent( NE_RESIZE_CURSOR, E_RESIZE_CURSOR, SE_RESIZE_CURSOR );
north = createDragBorderComponent( NW_RESIZE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR );
south = createDragBorderComponent( SW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR );
west = createDragBorderComponent( NW_RESIZE_CURSOR, W_RESIZE_CURSOR, SW_RESIZE_CURSOR );
east = createDragBorderComponent( NE_RESIZE_CURSOR, E_RESIZE_CURSOR, SE_RESIZE_CURSOR );
Container cont = (resizeComp instanceof JRootPane) ? ((JRootPane)resizeComp).getLayeredPane() : resizeComp;
Object cons = (cont instanceof JLayeredPane) ? WINDOW_RESIZER_LAYER : null;
cont.add( topDragComp, cons, 0 );
cont.add( bottomDragComp, cons, 1 );
cont.add( leftDragComp, cons, 2 );
cont.add( rightDragComp, cons, 3 );
JLayeredPane layeredPane = rootPane.getLayeredPane();
layeredPane.add( north, WINDOW_RESIZER_LAYER );
layeredPane.add( south, WINDOW_RESIZER_LAYER );
layeredPane.add( west, WINDOW_RESIZER_LAYER );
layeredPane.add( east, WINDOW_RESIZER_LAYER );
resizeComp.addComponentListener( this );
resizeComp.addPropertyChangeListener( "ancestor", this );
rootPane.addComponentListener( this );
rootPane.addPropertyChangeListener( "ancestor", this );
if( rootPane.isDisplayable() )
if( resizeComp.isDisplayable() )
addNotify();
}
@@ -92,85 +99,96 @@ public class FlatWindowResizer
public void uninstall() {
removeNotify();
rootPane.removeComponentListener( this );
rootPane.removePropertyChangeListener( "ancestor", this );
resizeComp.removeComponentListener( this );
resizeComp.removePropertyChangeListener( "ancestor", this );
JLayeredPane layeredPane = rootPane.getLayeredPane();
layeredPane.remove( north );
layeredPane.remove( south );
layeredPane.remove( west );
layeredPane.remove( east );
Container cont = topDragComp.getParent();
cont.remove( topDragComp );
cont.remove( bottomDragComp );
cont.remove( leftDragComp );
cont.remove( rightDragComp );
}
public void doLayout() {
if( !north.isVisible() )
if( !topDragComp.isVisible() )
return;
int x = 0;
int y = 0;
int width = rootPane.getWidth();
int height = rootPane.getHeight();
int width = resizeComp.getWidth();
int height = resizeComp.getHeight();
if( width == 0 || height == 0 )
return;
Insets resizeInsets = getResizeInsets();
int thickness = UIScale.scale( borderDragThickness );
int y2 = y + thickness;
int height2 = height - (thickness * 2);
int topThickness = Math.max( resizeInsets.top, thickness );
int bottomThickness = Math.max( resizeInsets.bottom, thickness );
int leftThickness = Math.max( resizeInsets.left, thickness );
int rightThickness = Math.max( resizeInsets.right, thickness );
int y2 = y + topThickness;
int height2 = height - topThickness - bottomThickness;
north.setBounds( x, y, width, thickness );
south.setBounds( x, y + height - thickness, width, thickness );
west.setBounds( x, y2, thickness, height2 );
east.setBounds( x + width - thickness, y2, thickness, height2 );
// set bounds of drag components
topDragComp.setBounds( x, y, width, topThickness );
bottomDragComp.setBounds( x, y + height - bottomThickness, width, bottomThickness );
leftDragComp.setBounds( x, y2, leftThickness, height2 );
rightDragComp.setBounds( x + width - rightThickness, y2, rightThickness, height2 );
// set corner drag widths
int cornerDelta = UIScale.scale( cornerDragWidth - borderDragThickness );
topDragComp.setCornerDragWidths( leftThickness + cornerDelta, rightThickness + cornerDelta );
bottomDragComp.setCornerDragWidths( leftThickness + cornerDelta, rightThickness + cornerDelta );
leftDragComp.setCornerDragWidths( cornerDelta, cornerDelta );
rightDragComp.setCornerDragWidths( cornerDelta, cornerDelta );
}
protected Insets getResizeInsets() {
return new Insets( 0, 0, 0, 0 );
}
protected void addNotify() {
Container parent = rootPane.getParent();
window = (parent instanceof Window) ? (Window) parent : null;
if( window instanceof Frame ) {
window.addPropertyChangeListener( "resizable", this );
window.addWindowStateListener( this );
}
updateVisibility();
}
protected void removeNotify() {
if( window instanceof Frame ) {
window.removePropertyChangeListener( "resizable", this );
window.removeWindowStateListener( this );
}
window = null;
updateVisibility();
}
protected void updateVisibility() {
boolean visible = isWindowResizable();
if( visible == north.isVisible() )
if( visible == topDragComp.isVisible() )
return;
north.setVisible( visible );
south.setVisible( visible );
west.setVisible( visible );
topDragComp.setVisible( visible );
bottomDragComp.setVisible( visible );
leftDragComp.setVisible( visible );
// The east component is not hidden, instead its bounds are set to 0,0,1,1 and
// it is disabled. This is necessary so that DragBorderComponent.paintComponent() is invoked.
east.setEnabled( visible );
rightDragComp.setEnabled( visible );
if( visible ) {
east.setVisible( true ); // necessary because it is initially invisible
rightDragComp.setVisible( true ); // necessary because it is initially invisible
doLayout();
} else
east.setBounds( 0, 0, 1, 1 );
rightDragComp.setBounds( 0, 0, 1, 1 );
}
protected boolean isWindowResizable() {
if( window instanceof Frame )
return ((Frame)window).isResizable() && (((Frame)window).getExtendedState() & Frame.MAXIMIZED_BOTH) == 0;
if( window instanceof Dialog )
return ((Dialog)window).isResizable();
boolean isDialog() {
return false;
}
protected abstract boolean isWindowResizable();
protected abstract Rectangle getWindowBounds();
protected abstract void setWindowBounds( Rectangle r );
protected abstract boolean honorMinimumSizeOnResize();
protected abstract Dimension getWindowMinimumSize();
protected void beginResizing( int direction ) {}
protected void endResizing() {}
//---- interface PropertyChangeListener ----
@Override
public void propertyChange( PropertyChangeEvent e ) {
switch( e.getPropertyName() ) {
@@ -187,10 +205,7 @@ public class FlatWindowResizer
}
}
@Override
public void windowStateChanged( WindowEvent e ) {
updateVisibility();
}
//---- interface ComponentListener ----
@Override
public void componentResized( ComponentEvent e ) {
@@ -201,6 +216,163 @@ public class FlatWindowResizer
@Override public void componentShown( ComponentEvent e ) {}
@Override public void componentHidden( ComponentEvent e ) {}
//---- class WindowResizer ------------------------------------------------
/**
* Resizes frames and dialogs.
*/
public static class WindowResizer
extends FlatWindowResizer
implements WindowStateListener
{
protected Window window;
public WindowResizer( JRootPane rootPane ) {
super( rootPane );
}
@Override
protected void addNotify() {
Container parent = resizeComp.getParent();
window = (parent instanceof Window) ? (Window) parent : null;
if( window instanceof Frame ) {
window.addPropertyChangeListener( "resizable", this );
window.addWindowStateListener( this );
}
super.addNotify();
}
@Override
protected void removeNotify() {
if( window instanceof Frame ) {
window.removePropertyChangeListener( "resizable", this );
window.removeWindowStateListener( this );
}
window = null;
super.removeNotify();
}
@Override
protected boolean isWindowResizable() {
if( window instanceof Frame )
return ((Frame)window).isResizable() && (((Frame)window).getExtendedState() & Frame.MAXIMIZED_BOTH) == 0;
if( window instanceof Dialog )
return ((Dialog)window).isResizable();
return false;
}
@Override
protected Rectangle getWindowBounds() {
return window.getBounds();
}
@Override
protected void setWindowBounds( Rectangle r ) {
window.setBounds( r );
// immediately layout drag border components
doLayout();
if( Toolkit.getDefaultToolkit().isDynamicLayoutActive() ) {
window.validate();
resizeComp.repaint();
}
}
@Override
protected boolean honorMinimumSizeOnResize() {
return
(honorFrameMinimumSizeOnResize && window instanceof Frame) ||
(honorDialogMinimumSizeOnResize && window instanceof Dialog);
}
@Override
protected Dimension getWindowMinimumSize() {
return window.getMinimumSize();
}
@Override
boolean isDialog() {
return window instanceof Dialog;
}
@Override
public void windowStateChanged( WindowEvent e ) {
updateVisibility();
}
}
//---- class InternalFrameResizer -----------------------------------------
/**
* Resizes internal frames.
*/
public static class InternalFrameResizer
extends FlatWindowResizer
{
protected final Supplier<DesktopManager> desktopManager;
public InternalFrameResizer( JInternalFrame frame, Supplier<DesktopManager> desktopManager ) {
super( frame );
this.desktopManager = desktopManager;
frame.addPropertyChangeListener( "resizable", this );
}
@Override
public void uninstall() {
getFrame().removePropertyChangeListener( "resizable", this );
super.uninstall();
}
private JInternalFrame getFrame() {
return (JInternalFrame) resizeComp;
}
@Override
protected Insets getResizeInsets() {
return getFrame().getInsets();
}
@Override
protected boolean isWindowResizable() {
return getFrame().isResizable();
}
@Override
protected Rectangle getWindowBounds() {
return getFrame().getBounds();
}
@Override
protected void setWindowBounds( Rectangle r ) {
desktopManager.get().resizeFrame( getFrame(), r.x, r.y, r.width, r.height );
}
@Override
protected boolean honorMinimumSizeOnResize() {
return true;
}
@Override
protected Dimension getWindowMinimumSize() {
return getFrame().getMinimumSize();
}
@Override
protected void beginResizing( int direction ) {
desktopManager.get().beginResizingFrame( getFrame(), direction );
}
@Override
protected void endResizing() {
desktopManager.get().endResizingFrame( getFrame() );
}
}
//---- class DragBorderComponent ------------------------------------------
protected class DragBorderComponent
@@ -212,9 +384,15 @@ public class FlatWindowResizer
private final int trailingResizeDir;
private int resizeDir = -1;
private int dragStartMouseX;
private int dragStartMouseY;
private Rectangle dragStartWindowBounds;
private int leadingCornerDragWidth;
private int trailingCornerDragWidth;
// offsets of mouse position to window edges
private int dragLeftOffset;
private int dragRightOffset;
private int dragTopOffset;
private int dragBottomOffset;
protected DragBorderComponent( int leadingResizeDir, int centerResizeDir, int trailingResizeDir ) {
this.leadingResizeDir = leadingResizeDir;
@@ -228,6 +406,11 @@ public class FlatWindowResizer
addMouseMotionListener( this );
}
void setCornerDragWidths( int leading, int trailing ) {
leadingCornerDragWidth = leading;
trailingCornerDragWidth = trailing;
}
protected void setResizeDir( int resizeDir ) {
if( this.resizeDir == resizeDir )
return;
@@ -247,12 +430,25 @@ public class FlatWindowResizer
super.paintChildren( g );
// this is necessary because Dialog.setResizable() does not fire events
if( window instanceof Dialog )
if( isDialog() )
updateVisibility();
/*debug
int width = getWidth();
int height = getHeight();
g.setColor( java.awt.Color.blue );
boolean topOrBottom = (centerResizeDir == N_RESIZE_CURSOR || centerResizeDir == S_RESIZE_CURSOR);
if( topOrBottom ) {
g.drawLine( leadingCornerDragWidth, 0, leadingCornerDragWidth, height );
g.drawLine( width - trailingCornerDragWidth, 0, width - trailingCornerDragWidth, height );
} else {
g.drawLine( 0, leadingCornerDragWidth, width, leadingCornerDragWidth );
g.drawLine( 0, height - trailingCornerDragWidth, width, height - trailingCornerDragWidth );
}
g.setColor( java.awt.Color.red );
g.drawRect( 0, 0, getWidth() - 1, getHeight() - 1 );
g.drawRect( 0, 0, width - 1, height - 1 );
debug*/
}
@@ -262,114 +458,116 @@ debug*/
@Override
public void mousePressed( MouseEvent e ) {
if( window == null )
if( !isWindowResizable() )
return;
dragStartMouseX = e.getXOnScreen();
dragStartMouseY = e.getYOnScreen();
dragStartWindowBounds = window.getBounds();
int xOnScreen = e.getXOnScreen();
int yOnScreen = e.getYOnScreen();
Rectangle windowBounds = getWindowBounds();
// compute offsets of mouse position to window edges
dragLeftOffset = xOnScreen - windowBounds.x;
dragTopOffset = yOnScreen - windowBounds.y;
dragRightOffset = windowBounds.x + windowBounds.width - xOnScreen;
dragBottomOffset = windowBounds.y + windowBounds.height - yOnScreen;
int direction = 0;
switch( resizeDir ) {
case N_RESIZE_CURSOR: direction = NORTH; break;
case S_RESIZE_CURSOR: direction = SOUTH; break;
case W_RESIZE_CURSOR: direction = WEST; break;
case E_RESIZE_CURSOR: direction = EAST; break;
case NW_RESIZE_CURSOR: direction = NORTH_WEST; break;
case NE_RESIZE_CURSOR: direction = NORTH_EAST; break;
case SW_RESIZE_CURSOR: direction = SOUTH_WEST; break;
case SE_RESIZE_CURSOR: direction = SOUTH_EAST; break;
}
beginResizing( direction );
}
@Override
public void mouseReleased( MouseEvent e ) {
dragStartWindowBounds = null;
if( !isWindowResizable() )
return;
dragLeftOffset = dragRightOffset = dragTopOffset = dragBottomOffset = 0;
endResizing();
}
@Override
public void mouseEntered( MouseEvent e ) {
}
@Override
public void mouseExited( MouseEvent e ) {
}
@Override public void mouseEntered( MouseEvent e ) {}
@Override public void mouseExited( MouseEvent e ) {}
@Override
public void mouseMoved( MouseEvent e ) {
boolean topBottom = (centerResizeDir == N_RESIZE_CURSOR || centerResizeDir == S_RESIZE_CURSOR);
int xy = topBottom ? e.getX() : e.getY();
int wh = topBottom ? getWidth() : getHeight();
int cornerWH = UIScale.scale( cornerDragWidth - (topBottom ? 0 : borderDragThickness) );
boolean topOrBottom = (centerResizeDir == N_RESIZE_CURSOR || centerResizeDir == S_RESIZE_CURSOR);
int xy = topOrBottom ? e.getX() : e.getY();
int wh = topOrBottom ? getWidth() : getHeight();
setResizeDir( xy <= cornerWH
setResizeDir( xy <= leadingCornerDragWidth
? leadingResizeDir
: (xy >= wh - cornerWH
: (xy >= wh - trailingCornerDragWidth
? trailingResizeDir
: centerResizeDir) );
}
@Override
public void mouseDragged( MouseEvent e ) {
if( dragStartWindowBounds == null )
return;
if( !isWindowResizable() )
return;
int mouseDeltaX = e.getXOnScreen() - dragStartMouseX;
int mouseDeltaY = e.getYOnScreen() - dragStartMouseY;
int xOnScreen = e.getXOnScreen();
int yOnScreen = e.getYOnScreen();
int deltaX = 0;
int deltaY = 0;
int deltaWidth = 0;
int deltaHeight = 0;
// north
if( resizeDir == N_RESIZE_CURSOR || resizeDir == NW_RESIZE_CURSOR || resizeDir == NE_RESIZE_CURSOR ) {
deltaY = mouseDeltaY;
deltaHeight = -mouseDeltaY;
}
// south
if( resizeDir == S_RESIZE_CURSOR || resizeDir == SW_RESIZE_CURSOR || resizeDir == SE_RESIZE_CURSOR )
deltaHeight = mouseDeltaY;
// west
if( resizeDir == W_RESIZE_CURSOR || resizeDir == NW_RESIZE_CURSOR || resizeDir == SW_RESIZE_CURSOR ) {
deltaX = mouseDeltaX;
deltaWidth = -mouseDeltaX;
}
// east
if( resizeDir == E_RESIZE_CURSOR || resizeDir == NE_RESIZE_CURSOR || resizeDir == SE_RESIZE_CURSOR )
deltaWidth = mouseDeltaX;
// Get current window bounds and compute new bounds based them.
// This is necessary because window manager may alter window bounds while resizing.
// E.g. when having two monitors with different scale factors and resizing
// a window on first screen to the second screen, then the window manager may
// decide at some point that the window should be only on second screen
// and adjusts its bounds.
Rectangle oldBounds = getWindowBounds();
Rectangle newBounds = new Rectangle( oldBounds );
// compute new window bounds
Rectangle newBounds = new Rectangle( dragStartWindowBounds );
newBounds.x += deltaX;
newBounds.y += deltaY;
newBounds.width += deltaWidth;
newBounds.height += deltaHeight;
// top
if( resizeDir == N_RESIZE_CURSOR || resizeDir == NW_RESIZE_CURSOR || resizeDir == NE_RESIZE_CURSOR ) {
newBounds.y = yOnScreen - dragTopOffset;
newBounds.height += (oldBounds.y - newBounds.y);
}
// bottom
if( resizeDir == S_RESIZE_CURSOR || resizeDir == SW_RESIZE_CURSOR || resizeDir == SE_RESIZE_CURSOR )
newBounds.height = (yOnScreen + dragBottomOffset) - newBounds.y;
// left
if( resizeDir == W_RESIZE_CURSOR || resizeDir == NW_RESIZE_CURSOR || resizeDir == SW_RESIZE_CURSOR ) {
newBounds.x = xOnScreen - dragLeftOffset;
newBounds.width += (oldBounds.x - newBounds.x);
}
// right
if( resizeDir == E_RESIZE_CURSOR || resizeDir == NE_RESIZE_CURSOR || resizeDir == SE_RESIZE_CURSOR )
newBounds.width = (xOnScreen + dragRightOffset) - newBounds.x;
// apply minimum window size
boolean honorMinimumSizeOnResize =
(honorFrameMinimumSizeOnResize && window instanceof Frame) ||
(honorDialogMinimumSizeOnResize && window instanceof Dialog);
Dimension minimumSize = honorMinimumSizeOnResize ? window.getMinimumSize() : null;
Dimension minimumSize = honorMinimumSizeOnResize() ? getWindowMinimumSize() : null;
if( minimumSize == null )
minimumSize = UIScale.scale( new Dimension( 150, 50 ) );
if( newBounds.width < minimumSize.width ) {
if( deltaX != 0 )
if( newBounds.x != oldBounds.x )
newBounds.x -= (minimumSize.width - newBounds.width);
newBounds.width = minimumSize.width;
}
if( newBounds.height < minimumSize.height ) {
if( deltaY != 0 )
if( newBounds.y != oldBounds.y )
newBounds.y -= (minimumSize.height - newBounds.height);
newBounds.height = minimumSize.height;
}
// set window bounds
if( !newBounds.equals( dragStartWindowBounds ) ) {
window.setBounds( newBounds );
// immediately layout drag border components
FlatWindowResizer.this.doLayout();
if( Toolkit.getDefaultToolkit().isDynamicLayoutActive() ) {
window.validate();
rootPane.repaint();
}
}
if( !newBounds.equals( oldBounds ) )
setWindowBounds( newBounds );
}
}
}

View File

@@ -0,0 +1,53 @@
/*
* Copyright 2020 FormDev Software GmbH
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.formdev.flatlaf.util;
import static com.formdev.flatlaf.util.UIScale.scale;
import java.awt.Component;
import java.awt.Insets;
import javax.swing.border.EmptyBorder;
/**
* Empty border that scales insets.
*
* @author Karl Tauber
*/
public class ScaledEmptyBorder
extends EmptyBorder
{
public ScaledEmptyBorder( int top, int left, int bottom, int right ) {
super( top, left, bottom, right );
}
public ScaledEmptyBorder( Insets insets ) {
super( insets );
}
@Override
public Insets getBorderInsets() {
return new Insets( scale( top ), scale( left ), scale( bottom ), scale( right ) );
}
@Override
public Insets getBorderInsets( Component c, Insets insets ) {
insets.left = scale( left );
insets.top = scale( top );
insets.right = scale( right );
insets.bottom = scale( bottom );
return insets;
}
}

View File

@@ -22,6 +22,7 @@ import java.awt.Graphics2D;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsEnvironment;
import java.awt.Insets;
import java.awt.Toolkit;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
@@ -162,6 +163,13 @@ public class UIScale
if( !isUserScalingEnabled() )
return;
// apply custom scale factor specified in system property "flatlaf.uiScale"
float customScaleFactor = getCustomScaleFactor();
if( customScaleFactor > 0 ) {
setUserScaleFactor( customScaleFactor );
return;
}
// use font size to calculate scale factor (instead of DPI)
// because even if we are on a HiDPI display it is not sure
// that a larger font size is set by the current LaF
@@ -170,7 +178,45 @@ public class UIScale
if( font == null )
font = UIManager.getFont( "Label.font" );
setUserScaleFactor( computeScaleFactor( font ) );
float newScaleFactor;
if( SystemInfo.isWindows ) {
// Special handling for Windows to be compatible with OS scaling,
// which distinguish between "screen scaling" and "text scaling".
// - Windows "screen scaling" scales everything (text, icon, gaps, etc)
// and may have different scaling factors for each screen.
// - Windows "text scaling" increases only the font size, but on all screens.
//
// Both can be changed by the user in the Windows 10 Settings:
// - Settings > Display > Scale and layout
// - Settings > Ease of Access > Display > Make text bigger (100% - 225%)
if( font instanceof UIResource ) {
if( isSystemScalingEnabled() ) {
// Do not apply own scaling if the JRE scales using Windows screen scale factor.
// If user increases font size in Windows 10 settings, desktop property
// "win.messagebox.font" is changed and FlatLaf uses the larger font.
newScaleFactor = 1;
} else {
// If the JRE does not scale (Java 8), the size of the UI font
// (usually from desktop property "win.messagebox.font")
// combines the Windows screen and text scale factors.
// But the font in desktop property "win.defaultGUI.font" is only
// scaled with the Windows screen scale factor. So use it to compute
// our scale factor that is equal to Windows screen scale factor.
Font winFont = (Font) Toolkit.getDefaultToolkit().getDesktopProperty( "win.defaultGUI.font" );
newScaleFactor = computeScaleFactor( (winFont != null) ? winFont : font );
}
} else {
// If font was explicitly set from outside (is not a UIResource)
// use it to compute scale factor. This allows applications to
// use custom fonts (e.g. that the user can change in UI) and
// get scaling if a larger font size is used.
// E.g. FlatLaf Demo supports increasing font size in "Font" menu and UI scales.
newScaleFactor = computeScaleFactor( font );
}
} else
newScaleFactor = computeScaleFactor( font );
setUserScaleFactor( newScaleFactor );
}
private static float computeScaleFactor( Font font ) {
@@ -206,8 +252,7 @@ public class UIScale
if( !isUserScalingEnabled() )
return font;
String uiScale = System.getProperty( FlatSystemProperties.UI_SCALE );
float scaleFactor = parseScaleFactor( uiScale );
float scaleFactor = getCustomScaleFactor();
if( scaleFactor <= 0 )
return font;
@@ -219,6 +264,13 @@ public class UIScale
return new FontUIResource( font.deriveFont( (float) newFontSize ) );
}
/**
* Get custom scale factor specified in system property "flatlaf.uiScale".
*/
private static float getCustomScaleFactor() {
return parseScaleFactor( System.getProperty( FlatSystemProperties.UI_SCALE ) );
}
/**
* Similar to sun.java2d.SunGraphicsEnvironment.getScaleFactor(String)
*/

View File

@@ -21,18 +21,19 @@
#---- variables ----
@background=#3c3f41
@foreground=#bbbbbb
@foreground=#bbb
@selectionBackground=#4B6EAF
@selectionForeground=@foreground
@selectionInactiveBackground=#0D293E
@selectionInactiveForeground=@foreground
@disabledText=#777777
@disabledText=#888
@textComponentBackground=#45494A
@menuBackground=darken(@background,5%)
@menuHoverBackground=lighten(@menuBackground,10%,derived)
@menuCheckBackground=lighten(@menuBackground,10%,derived)
@menuCheckHoverBackground=lighten(@menuBackground,20%,derived)
@cellFocusColor=#000000
@menuCheckBackground=darken(@selectionBackground,10%)
@menuAcceleratorForeground=darken(@foreground,15%)
@menuAcceleratorSelectionForeground=@selectionForeground
@cellFocusColor=#000
@icon=#adadad
# Drop (use lazy colors for IntelliJ platform themes, which usually do not specify these colors)
@@ -42,24 +43,6 @@
@dropLineShortColor=lighten(List.selectionBackground,30%,lazy)
#---- globals ----
*.background=@background
*.foreground=@foreground
*.textBackground=@background
*.textForeground=@foreground
*.caretForeground=@foreground
*.inactiveBackground=@background
*.inactiveForeground=@foreground
*.selectionBackground=@selectionBackground
*.selectionForeground=@selectionForeground
*.disabledBackground=@background
*.disabledForeground=@disabledText
*.disabledText=@disabledText
*.acceleratorForeground=darken(@foreground,15%)
*.acceleratorSelectionForeground=@selectionForeground
#---- system colors ----
activeCaption=#434E60
@@ -74,6 +57,9 @@ controlDkShadow=lighten($controlShadow,10%)
Button.background=#4c5052
Button.hoverBackground=lighten($Button.background,3%,derived)
Button.pressedBackground=lighten($Button.background,6%,derived)
Button.selectedBackground=lighten($Button.background,10%,derived)
Button.selectedForeground=@foreground
Button.disabledSelectedBackground=lighten($Button.background,3%,derived)
Button.borderColor=#5e6060
Button.disabledBorderColor=#5e6060
@@ -81,7 +67,7 @@ Button.focusedBorderColor=#466d94
Button.hoverBorderColor=$Button.focusedBorderColor
Button.default.background=#365880
Button.default.foreground=#bbbbbb
Button.default.foreground=#bbb
Button.default.hoverBackground=lighten($Button.default.background,3%,derived)
Button.default.pressedBackground=lighten($Button.default.background,6%,derived)
Button.default.borderColor=#4c708c
@@ -92,6 +78,7 @@ Button.default.boldText=true
Button.toolbar.hoverBackground=lighten($Button.background,1%,derived)
Button.toolbar.pressedBackground=lighten($Button.background,4%,derived)
Button.toolbar.selectedBackground=lighten($Button.background,7%,derived)
#---- CheckBox ----
@@ -132,12 +119,10 @@ CheckBox.icon[filled].selectedPressedBackground=darken($CheckBox.icon[filled].se
#---- ComboBox ----
ComboBox.background=@textComponentBackground
ComboBox.buttonBackground=@textComponentBackground
ComboBox.buttonEditableBackground=#404445
ComboBox.buttonArrowColor=#9A9DA1
ComboBox.buttonDisabledArrowColor=#585858
ComboBox.buttonHoverArrowColor=#bbbbbb
ComboBox.buttonHoverArrowColor=#bbb
#---- Component ----
@@ -187,11 +172,6 @@ InternalFrame.activeDropShadowOpacity=0.5
InternalFrame.inactiveDropShadowOpacity=0.75
#---- List ----
List.background=@textComponentBackground
#---- Menu ----
Menu.icon.arrowColor=#A7A7A7
@@ -201,7 +181,6 @@ Menu.icon.disabledArrowColor=#606060
#---- MenuBar ----
MenuBar.borderColor=#515151
MenuBar.hoverBackground=@menuHoverBackground
#---- MenuItemCheckBox ----
@@ -228,17 +207,12 @@ PopupMenu.borderColor=#5e5e5e
#---- ProgressBar ----
ProgressBar.background=#555555
ProgressBar.background=#555
ProgressBar.foreground=#4A88C7
ProgressBar.selectionForeground=@foreground
ProgressBar.selectionBackground=@foreground
#---- RadioButton ----
RadioButton.icon[filled].centerDiameter=5
#---- RootPane ----
RootPane.activeBorderColor=darken(@background,7%,derived)
@@ -265,7 +239,7 @@ Separator.foreground=#515151
Slider.trackColor=#646464
Slider.thumbColor=#A6A6A6
Slider.tickColor=#888888
Slider.tickColor=#888
Slider.hoverColor=darken($Slider.thumbColor,15%,derived)
Slider.disabledForeground=#4c5052
@@ -278,23 +252,20 @@ SplitPaneDivider.oneTouchHoverArrowColor=#7A7D81
#---- TabbedPane ----
TabbedPane.disabledForeground=@disabledText
TabbedPane.underlineColor=#4A88C7
TabbedPane.disabledUnderlineColor=#7a7a7a
TabbedPane.hoverColor=#2e3133
TabbedPane.focusColor=#3d4b5c
TabbedPane.contentAreaColor=#323232
TabbedPane.contentAreaColor=#646464
#---- Table ----
Table.background=@textComponentBackground
Table.gridColor=lighten($Table.background,3%)
#---- TableHeader ----
TableHeader.background=@textComponentBackground
TableHeader.separatorColor=lighten($TableHeader.background,10%)
TableHeader.bottomSeparatorColor=$TableHeader.separatorColor
@@ -309,7 +280,6 @@ TitlePane.buttonPressedBackground=lighten($TitlePane.background,20%,derived)
#---- ToggleButton ----
ToggleButton.selectedBackground=lighten($ToggleButton.background,10%,derived)
ToggleButton.selectedForeground=@foreground
ToggleButton.disabledSelectedBackground=lighten($ToggleButton.background,3%,derived)
ToggleButton.toolbar.selectedBackground=lighten($ToggleButton.background,7%,derived)
@@ -323,5 +293,4 @@ ToolTip.background=#1e2123
#---- Tree ----
Tree.background=@textComponentBackground
Tree.hash=#505355

View File

@@ -23,7 +23,7 @@
Button.focusedBackground=null
Button.default.background=#4D8AC9
Button.default.foreground=#FFFFFF
Button.default.foreground=#fff
Button.default.focusedBackground=null
Button.default.borderColor=#3D75B2
Button.default.hoverBorderColor=#A9C9F5

View File

@@ -67,6 +67,22 @@ ViewportUI=com.formdev.flatlaf.ui.FlatViewportUI
@menuItemMargin=3,6,3,6
#---- globals ----
*.background=@background
*.foreground=@foreground
*.caretForeground=@foreground
*.inactiveBackground=@background
*.inactiveForeground=@disabledText
*.selectionBackground=@selectionBackground
*.selectionForeground=@selectionForeground
*.disabledBackground=@background
*.disabledForeground=@disabledText
*.disabledText=@disabledText
*.acceleratorForeground=@menuAcceleratorForeground
*.acceleratorSelectionForeground=@menuAcceleratorSelectionForeground
#---- system colors ----
desktop=@textComponentBackground
@@ -184,6 +200,8 @@ ComboBox.editorColumns=0
ComboBox.maximumRowCount=15
[mac]ComboBox.showPopupOnNavigation=true
ComboBox.buttonStyle=auto
ComboBox.background=@textComponentBackground
ComboBox.buttonBackground=@textComponentBackground
#---- Component ----
@@ -220,6 +238,7 @@ FileChooser.homeFolderIcon=com.formdev.flatlaf.icons.FlatFileChooserHomeFolderIc
FileChooser.detailsViewIcon=com.formdev.flatlaf.icons.FlatFileChooserDetailsViewIcon
FileChooser.listViewIcon=com.formdev.flatlaf.icons.FlatFileChooserListViewIcon
FileChooser.usesSingleFilePane=true
[win]FileChooser.useSystemExtensionHiding=true
#---- FileView ----
@@ -288,6 +307,7 @@ List.cellFocusColor=@cellFocusColor
List.cellNoFocusBorder=com.formdev.flatlaf.ui.FlatListCellBorder$Default
List.focusCellHighlightBorder=com.formdev.flatlaf.ui.FlatListCellBorder$Focused
List.focusSelectedCellHighlightBorder=com.formdev.flatlaf.ui.FlatListCellBorder$Selected
List.background=@textComponentBackground
List.selectionInactiveBackground=@selectionInactiveBackground
List.selectionInactiveForeground=@selectionInactiveForeground
List.dropCellBackground=@dropCellBackground
@@ -313,6 +333,7 @@ Menu.background=@menuBackground
MenuBar.border=com.formdev.flatlaf.ui.FlatMenuBarBorder
MenuBar.background=@menuBackground
MenuBar.hoverBackground=@menuHoverBackground
MenuBar.itemMargins=3,8,3,8
@@ -338,7 +359,7 @@ MenuItem.acceleratorDelimiter=-
# for MenuItem.selectionType=underline
MenuItem.underlineSelectionBackground=@menuHoverBackground
MenuItem.underlineSelectionCheckBackground=@menuCheckHoverBackground
MenuItem.underlineSelectionCheckBackground=@menuCheckBackground
MenuItem.underlineSelectionColor=$TabbedPane.underlineColor
MenuItem.underlineSelectionHeight=3
@@ -373,6 +394,7 @@ PasswordField.margin=@textComponentMargin
PasswordField.background=@textComponentBackground
PasswordField.placeholderForeground=@disabledText
PasswordField.echoChar=\u2022
PasswordField.showCapsLock=true
PasswordField.capsLockIcon=com.formdev.flatlaf.icons.FlatCapsLockIcon
@@ -411,6 +433,7 @@ ProgressBar.repaintInterval=15
RadioButton.border=com.formdev.flatlaf.ui.FlatMarginBorder
RadioButton.icon=com.formdev.flatlaf.icons.FlatRadioButtonIcon
RadioButton.icon.centerDiameter=8
RadioButton.icon[filled].centerDiameter=5
RadioButton.margin=2,2,2,2
RadioButton.iconTextGap=4
RadioButton.rollover=true
@@ -516,12 +539,15 @@ SplitPaneDivider.oneTouchArrowColor=$ComboBox.buttonArrowColor
TabbedPane.tabHeight=32
TabbedPane.tabSelectionHeight=3
TabbedPane.contentSeparatorHeight=1
TabbedPane.showTabSeparators=false
TabbedPane.tabSeparatorsFullHeight=false
TabbedPane.hasFullBorder=false
TabbedPane.tabInsets=0,12,0,12
TabbedPane.tabInsets=4,12,4,12
TabbedPane.tabAreaInsets=0,0,0,0
TabbedPane.selectedTabPadInsets=0,0,0,0
TabbedPane.tabRunOverlay=0
TabbedPane.tabsOverlapBorder=true
TabbedPane.disabledForeground=@disabledText
TabbedPane.shadow=@background
TabbedPane.contentBorderInsets=null
@@ -544,6 +570,7 @@ Table.focusCellHighlightBorder=com.formdev.flatlaf.ui.FlatTableCellBorder$Focuse
Table.focusSelectedCellHighlightBorder=com.formdev.flatlaf.ui.FlatTableCellBorder$Selected
Table.focusCellBackground=@textComponentBackground
Table.focusCellForeground=@foreground
Table.background=@textComponentBackground
Table.selectionInactiveBackground=@selectionInactiveBackground
Table.selectionInactiveForeground=@selectionInactiveForeground
Table.dropCellBackground=@dropCellBackground
@@ -557,6 +584,7 @@ Table.dropLineShortColor=@dropLineShortColor
TableHeader.height=25
TableHeader.cellBorder=2,3,2,3
TableHeader.focusCellBackground=$TableHeader.background
TableHeader.background=@textComponentBackground
#---- TextArea ----
@@ -628,6 +656,7 @@ ToggleButton.rollover=true
ToggleButton.background=$Button.background
ToggleButton.pressedBackground=$Button.pressedBackground
ToggleButton.selectedForeground=@foreground
ToggleButton.toolbar.hoverBackground=$Button.toolbar.hoverBackground
ToggleButton.toolbar.pressedBackground=$Button.toolbar.pressedBackground
@@ -668,9 +697,11 @@ ToolTipManager.enableToolTipMode=activeApplication
Tree.border=1,1,1,1
Tree.editorBorder=1,1,1,1,@cellFocusColor
Tree.background=@textComponentBackground
Tree.selectionInactiveBackground=@selectionInactiveBackground
Tree.selectionInactiveForeground=@selectionInactiveForeground
Tree.textBackground=$Tree.background
Tree.textForeground=$Tree.foreground
Tree.selectionBorderColor=@cellFocusColor
Tree.dropCellBackground=@dropCellBackground
Tree.dropCellForeground=@dropCellForeground

View File

@@ -21,18 +21,19 @@
#---- variables ----
@background=#f2f2f2
@foreground=#000000
@foreground=#000
@selectionBackground=#2675BF
@selectionForeground=#ffffff
@selectionForeground=#fff
@selectionInactiveBackground=#d4d4d4
@selectionInactiveForeground=@foreground
@disabledText=#8C8C8C
@textComponentBackground=#ffffff
@textComponentBackground=#fff
@menuBackground=#fff
@menuHoverBackground=darken(@menuBackground,10%,derived)
@menuCheckBackground=darken(@menuBackground,10%,derived)
@menuCheckHoverBackground=darken(@menuBackground,20%,derived)
@cellFocusColor=#000000
@menuCheckBackground=lighten(@selectionBackground,40%)
@menuAcceleratorForeground=lighten(@foreground,30%)
@menuAcceleratorSelectionForeground=@selectionForeground
@cellFocusColor=#000
@icon=#afafaf
# Drop (use lazy colors for IntelliJ platform themes, which usually do not specify these colors)
@@ -42,24 +43,6 @@
@dropLineShortColor=darken(List.selectionBackground,20%,lazy)
#---- globals ----
*.background=@background
*.foreground=@foreground
*.textBackground=#cccccc
*.textForeground=@foreground
*.caretForeground=@foreground
*.inactiveBackground=@background
*.inactiveForeground=@disabledText
*.selectionBackground=@selectionBackground
*.selectionForeground=@selectionForeground
*.disabledBackground=@background
*.disabledForeground=@disabledText
*.disabledText=@disabledText
*.acceleratorForeground=lighten(@foreground,30%)
*.acceleratorSelectionForeground=@selectionForeground
#---- system colors ----
activeCaption=#99b4d1
@@ -71,10 +54,13 @@ controlDkShadow=darken($controlShadow,15%)
#---- Button ----
Button.background=#ffffff
Button.background=#fff
Button.focusedBackground=#e3f1fa
Button.hoverBackground=darken($Button.background,3%,derived)
Button.pressedBackground=darken($Button.background,10%,derived)
Button.selectedBackground=darken($Button.background,20%,derived)
Button.selectedForeground=@foreground
Button.disabledSelectedBackground=darken($Button.background,13%,derived)
Button.borderColor=$Component.borderColor
Button.disabledBorderColor=$Component.disabledBorderColor
@@ -94,13 +80,14 @@ Button.default.borderWidth=2
Button.toolbar.hoverBackground=darken($Button.background,12%,derived)
Button.toolbar.pressedBackground=darken($Button.background,15%,derived)
Button.toolbar.selectedBackground=$Button.selectedBackground
#---- CheckBox ----
# enabled
CheckBox.icon.borderColor=#b0b0b0
CheckBox.icon.background=#FFFFFF
CheckBox.icon.background=#fff
CheckBox.icon.selectedBorderColor=$CheckBox.icon.borderColor
CheckBox.icon.selectedBackground=$CheckBox.icon.background
CheckBox.icon.checkmarkColor=#4F9EE3
@@ -126,7 +113,7 @@ CheckBox.icon.pressedBackground=$Button.pressedBackground
# enabled
CheckBox.icon[filled].selectedBorderColor=#4B97D9
CheckBox.icon[filled].selectedBackground=#4F9EE3
CheckBox.icon[filled].checkmarkColor=#FFFFFF
CheckBox.icon[filled].checkmarkColor=#fff
# focused
CheckBox.icon[filled].selectedFocusedBorderColor=#ACCFF7
CheckBox.icon[filled].selectedFocusedBackground=$CheckBox.icon[filled].selectedBackground
@@ -139,12 +126,10 @@ CheckBox.icon[filled].selectedPressedBackground=darken($CheckBox.icon[filled].se
#---- ComboBox ----
ComboBox.background=@textComponentBackground
ComboBox.buttonBackground=@textComponentBackground
ComboBox.buttonEditableBackground=#fafafa
ComboBox.buttonArrowColor=#666666
ComboBox.buttonArrowColor=#666
ComboBox.buttonDisabledArrowColor=#ABABAB
ComboBox.buttonHoverArrowColor=#999999
ComboBox.buttonHoverArrowColor=#999
#---- Component ----
@@ -199,21 +184,15 @@ InternalFrame.activeDropShadowOpacity=0.25
InternalFrame.inactiveDropShadowOpacity=0.5
#---- List ----
List.background=@textComponentBackground
#---- Menu ----
Menu.icon.arrowColor=#666666
Menu.icon.arrowColor=#666
Menu.icon.disabledArrowColor=#ABABAB
#---- MenuBar ----
MenuBar.borderColor=#cdcdcd
MenuBar.hoverBackground=@menuHoverBackground
#---- MenuItemCheckBox ----
@@ -246,11 +225,6 @@ ProgressBar.selectionForeground=@textComponentBackground
ProgressBar.selectionBackground=@foreground
#---- RadioButton ----
RadioButton.icon[filled].centerDiameter=5
#---- RootPane ----
RootPane.activeBorderColor=#707070
@@ -277,7 +251,7 @@ Separator.foreground=#d1d1d1
Slider.trackColor=#c4c4c4
Slider.thumbColor=#6e6e6e
Slider.tickColor=#888888
Slider.tickColor=#888
Slider.hoverColor=lighten($Slider.thumbColor,15%,derived)
Slider.disabledForeground=#c0c0c0
@@ -285,12 +259,11 @@ Slider.disabledForeground=#c0c0c0
#---- SplitPane ----
SplitPaneDivider.draggingColor=#c4c4c4
SplitPaneDivider.oneTouchHoverArrowColor=#333333
SplitPaneDivider.oneTouchHoverArrowColor=#333
#---- TabbedPane ----
TabbedPane.disabledForeground=@disabledText
TabbedPane.underlineColor=#4083C9
TabbedPane.disabledUnderlineColor=#ababab
TabbedPane.hoverColor=#d9d9d9
@@ -300,13 +273,11 @@ TabbedPane.contentAreaColor=#bfbfbf
#---- Table ----
Table.background=@textComponentBackground
Table.gridColor=darken($Table.background,3%)
#---- TableHeader ----
TableHeader.background=@textComponentBackground
TableHeader.separatorColor=darken($TableHeader.background,10%)
TableHeader.bottomSeparatorColor=$TableHeader.separatorColor
@@ -321,7 +292,6 @@ TitlePane.buttonPressedBackground=darken($TitlePane.background,20%,derived)
#---- ToggleButton ----
ToggleButton.selectedBackground=darken($ToggleButton.background,20%,derived)
ToggleButton.selectedForeground=@foreground
ToggleButton.disabledSelectedBackground=darken($ToggleButton.background,13%,derived)
ToggleButton.toolbar.selectedBackground=$ToggleButton.selectedBackground
@@ -335,5 +305,4 @@ ToolTip.background=#fafafa
#---- Tree ----
Tree.background=@textComponentBackground
Tree.hash=#E6E6E6

View File

@@ -16,6 +16,7 @@
package com.formdev.flatlaf.demo;
import java.awt.Component;
import javax.swing.*;
import javax.swing.text.DefaultEditorKit;
import net.miginfocom.swing.*;
@@ -114,14 +115,14 @@ class BasicComponentsPanel
JScrollPane scrollPane12 = new JScrollPane();
JTextPane textPane4 = new JTextPane();
JTextPane textPane5 = new JTextPane();
JLabel label3 = new JLabel();
JTextField textField5 = new JTextField();
JComboBox<String> comboBox7 = new JComboBox<>();
JSpinner spinner3 = new JSpinner();
JLabel label4 = new JLabel();
JTextField textField7 = new JTextField();
JComboBox<String> comboBox8 = new JComboBox<>();
JSpinner spinner4 = new JSpinner();
JLabel errorHintsLabel = new JLabel();
JTextField errorHintsTextField = new JTextField();
JComboBox<String> errorHintsComboBox = new JComboBox<>();
JSpinner errorHintsSpinner = new JSpinner();
JLabel warningHintsLabel = new JLabel();
JTextField warningHintsTextField = new JTextField();
JComboBox<String> warningHintsComboBox = new JComboBox<>();
JSpinner warningHintsSpinner = new JSpinner();
JPopupMenu popupMenu1 = new JPopupMenu();
JMenuItem cutMenuItem = new JMenuItem();
JMenuItem copyMenuItem = new JMenuItem();
@@ -129,12 +130,12 @@ class BasicComponentsPanel
//======== this ========
setLayout(new MigLayout(
"hidemode 3",
"insets dialog,hidemode 3",
// columns
"[]" +
"[]" +
"[]" +
"[]" +
"[sizegroup 1]" +
"[sizegroup 1]" +
"[sizegroup 1]" +
"[sizegroup 1]" +
"[]" +
"[]",
// rows
@@ -606,44 +607,44 @@ class BasicComponentsPanel
textPane5.setText("No scroll pane");
add(textPane5, "cell 5 11,growx");
//---- label3 ----
label3.setText("Error hints:");
add(label3, "cell 0 12");
//---- errorHintsLabel ----
errorHintsLabel.setText("Error hints:");
add(errorHintsLabel, "cell 0 12");
//---- textField5 ----
textField5.putClientProperty("JComponent.outline", "error");
add(textField5, "cell 1 12,growx");
//---- errorHintsTextField ----
errorHintsTextField.putClientProperty("JComponent.outline", "error");
add(errorHintsTextField, "cell 1 12,growx");
//---- comboBox7 ----
comboBox7.putClientProperty("JComponent.outline", "error");
comboBox7.setModel(new DefaultComboBoxModel<>(new String[] {
//---- errorHintsComboBox ----
errorHintsComboBox.putClientProperty("JComponent.outline", "error");
errorHintsComboBox.setModel(new DefaultComboBoxModel<>(new String[] {
"Editable"
}));
comboBox7.setEditable(true);
add(comboBox7, "cell 2 12,growx");
errorHintsComboBox.setEditable(true);
add(errorHintsComboBox, "cell 2 12,growx");
//---- spinner3 ----
spinner3.putClientProperty("JComponent.outline", "error");
add(spinner3, "cell 3 12,growx");
//---- errorHintsSpinner ----
errorHintsSpinner.putClientProperty("JComponent.outline", "error");
add(errorHintsSpinner, "cell 3 12,growx");
//---- label4 ----
label4.setText("Warning hints:");
add(label4, "cell 0 13");
//---- warningHintsLabel ----
warningHintsLabel.setText("Warning hints:");
add(warningHintsLabel, "cell 0 13");
//---- textField7 ----
textField7.putClientProperty("JComponent.outline", "warning");
add(textField7, "cell 1 13,growx");
//---- warningHintsTextField ----
warningHintsTextField.putClientProperty("JComponent.outline", "warning");
add(warningHintsTextField, "cell 1 13,growx");
//---- comboBox8 ----
comboBox8.putClientProperty("JComponent.outline", "warning");
comboBox8.setModel(new DefaultComboBoxModel<>(new String[] {
//---- warningHintsComboBox ----
warningHintsComboBox.putClientProperty("JComponent.outline", "warning");
warningHintsComboBox.setModel(new DefaultComboBoxModel<>(new String[] {
"Not editable"
}));
add(comboBox8, "cell 2 13,growx");
add(warningHintsComboBox, "cell 2 13,growx");
//---- spinner4 ----
spinner4.putClientProperty("JComponent.outline", "warning");
add(spinner4, "cell 3 13,growx");
//---- warningHintsSpinner ----
warningHintsSpinner.putClientProperty("JComponent.outline", "warning");
add(warningHintsSpinner, "cell 3 13,growx");
//======== popupMenu1 ========
{
@@ -668,6 +669,33 @@ class BasicComponentsPanel
cutMenuItem.addActionListener( new DefaultEditorKit.CutAction() );
copyMenuItem.addActionListener( new DefaultEditorKit.CopyAction() );
pasteMenuItem.addActionListener( new DefaultEditorKit.PasteAction() );
if( FlatLafDemo.screenshotsMode ) {
Component[] components = {
button13, button14, button15, button16, comboBox5, comboBox6,
textField6, passwordField5,
formattedTextFieldLabel, formattedTextField1, formattedTextField2, formattedTextField3, formattedTextField4, formattedTextField5,
textAreaLabel, scrollPane1, scrollPane2, scrollPane3, scrollPane4, textArea5,
editorPaneLabel, scrollPane5, scrollPane6, scrollPane7, scrollPane8, editorPane5,
textPaneLabel, scrollPane9, scrollPane10, scrollPane11, scrollPane12, textPane5,
errorHintsLabel, errorHintsTextField, errorHintsComboBox, errorHintsSpinner,
warningHintsLabel, warningHintsTextField, warningHintsComboBox, warningHintsSpinner,
};
for( Component c : components )
c.setVisible( false );
// move password fields one row up
Component[] formattedTextFields = { formattedTextFieldLabel, formattedTextField1, formattedTextField2, formattedTextField3, formattedTextField4 };
Component[] passwordFields = { passwordFieldLabel, passwordField1, passwordField2, passwordField3, passwordField4 };
MigLayout layout = (MigLayout) getLayout();
for( int i = 0; i < passwordFields.length; i++ ) {
Object cons = layout.getComponentConstraints( formattedTextFields[i] );
layout.setComponentConstraints( passwordFields[i], cons );
}
}
}
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables

View File

@@ -7,8 +7,8 @@ new FormModel {
"JavaCodeGenerator.defaultVariableLocal": true
}
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$layoutConstraints": "hidemode 3"
"$columnConstraints": "[][][][][][]"
"$layoutConstraints": "insets dialog,hidemode 3"
"$columnConstraints": "[sizegroup 1][sizegroup 1][sizegroup 1][sizegroup 1][][]"
"$rowConstraints": "[][][][][][][][][][][][]para[][]"
} ) {
name: "this"
@@ -592,19 +592,19 @@ new FormModel {
"value": "cell 5 11,growx"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label3"
name: "errorHintsLabel"
"text": "Error hints:"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 12"
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "textField5"
name: "errorHintsTextField"
"$client.JComponent.outline": "error"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 12,growx"
} )
add( new FormComponent( "javax.swing.JComboBox" ) {
name: "comboBox7"
name: "errorHintsComboBox"
"$client.JComponent.outline": "error"
"model": new javax.swing.DefaultComboBoxModel {
selectedItem: "Editable"
@@ -615,25 +615,25 @@ new FormModel {
"value": "cell 2 12,growx"
} )
add( new FormComponent( "javax.swing.JSpinner" ) {
name: "spinner3"
name: "errorHintsSpinner"
"$client.JComponent.outline": "error"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 12,growx"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label4"
name: "warningHintsLabel"
"text": "Warning hints:"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 13"
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "textField7"
name: "warningHintsTextField"
"$client.JComponent.outline": "warning"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 13,growx"
} )
add( new FormComponent( "javax.swing.JComboBox" ) {
name: "comboBox8"
name: "warningHintsComboBox"
"$client.JComponent.outline": "warning"
"model": new javax.swing.DefaultComboBoxModel {
selectedItem: "Not editable"
@@ -643,7 +643,7 @@ new FormModel {
"value": "cell 2 13,growx"
} )
add( new FormComponent( "javax.swing.JSpinner" ) {
name: "spinner4"
name: "warningHintsSpinner"
"$client.JComponent.outline": "warning"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 13,growx"

View File

@@ -30,6 +30,9 @@ import com.formdev.flatlaf.*;
import com.formdev.flatlaf.extras.FlatAnimatedLafChange;
import com.formdev.flatlaf.util.SystemInfo;
import com.formdev.flatlaf.util.UIScale;
import net.miginfocom.layout.ConstraintParser;
import net.miginfocom.layout.LC;
import net.miginfocom.layout.UnitValue;
import net.miginfocom.swing.*;
/**
@@ -44,6 +47,18 @@ class ControlBar
ControlBar() {
initComponents();
// remove top insets
MigLayout layout = (MigLayout) getLayout();
LC lc = ConstraintParser.parseLayoutConstraint( (String) layout.getLayoutConstraints() );
UnitValue[] insets = lc.getInsets();
lc.setInsets( new UnitValue[] {
new UnitValue( 0, UnitValue.PIXEL, null ),
insets[1],
insets[2],
insets[3]
} );
layout.setLayoutConstraints( lc );
// initialize look and feels combo box
DefaultComboBoxModel<LookAndFeelInfo> lafModel = new DefaultComboBoxModel<>();
lafModel.addElement( new LookAndFeelInfo( "Flat Light (F1)", FlatLightLaf.class.getName() ) );

View File

@@ -16,6 +16,9 @@
package com.formdev.flatlaf.demo;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
@@ -64,6 +67,41 @@ class DataComponentsPanel
}
}
private void rowSelectionChanged() {
table1.setRowSelectionAllowed( rowSelectionCheckBox.isSelected() );
}
private void columnSelectionChanged() {
table1.setColumnSelectionAllowed( columnSelectionCheckBox.isSelected() );
}
private void showHorizontalLinesChanged() {
table1.setShowHorizontalLines( showHorizontalLinesCheckBox.isSelected() );
}
private void showVerticalLinesChanged() {
table1.setShowVerticalLines( showVerticalLinesCheckBox.isSelected() );
}
private void intercellSpacingChanged() {
table1.setIntercellSpacing( intercellSpacingCheckBox.isSelected() ? new Dimension( 1, 1 ) : new Dimension() );
}
private void redGridColorChanged() {
table1.setGridColor( redGridColorCheckBox.isSelected() ? Color.red : UIManager.getColor( "Table.gridColor" ) );
}
@Override
public void updateUI() {
super.updateUI();
EventQueue.invokeLater( () -> {
showHorizontalLinesChanged();
showVerticalLinesChanged();
intercellSpacingChanged();
} );
}
@SuppressWarnings( { "unchecked", "rawtypes" } )
private void initComponents() {
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
@@ -80,6 +118,13 @@ class DataComponentsPanel
JLabel tableLabel = new JLabel();
JScrollPane scrollPane5 = new JScrollPane();
table1 = new JTable();
JPanel tableOptionsPanel = new JPanel();
showHorizontalLinesCheckBox = new JCheckBox();
showVerticalLinesCheckBox = new JCheckBox();
intercellSpacingCheckBox = new JCheckBox();
redGridColorCheckBox = new JCheckBox();
rowSelectionCheckBox = new JCheckBox();
columnSelectionCheckBox = new JCheckBox();
dndCheckBox = new JCheckBox();
JPopupMenu popupMenu2 = new JPopupMenu();
JMenuItem menuItem3 = new JMenuItem();
@@ -89,20 +134,20 @@ class DataComponentsPanel
//======== this ========
setLayout(new MigLayout(
"hidemode 3",
"insets dialog,hidemode 3",
// columns
"[]" +
"[200]" +
"[200]",
"[200,fill]" +
"[200,fill]" +
"[fill]",
// rows
"[]" +
"[::200]" +
"[::150]" +
"[]"));
"[150,grow,sizegroup 1,fill]" +
"[150,grow,sizegroup 1,fill]" +
"[150,grow,sizegroup 1,fill]"));
//---- listLabel ----
listLabel.setText("JList:");
add(listLabel, "cell 0 0");
add(listLabel, "cell 0 0,aligny top,growy 0");
//======== scrollPane1 ========
{
@@ -134,7 +179,7 @@ class DataComponentsPanel
list1.setComponentPopupMenu(popupMenu2);
scrollPane1.setViewportView(list1);
}
add(scrollPane1, "cell 1 0,growx");
add(scrollPane1, "cell 1 0");
//======== scrollPane2 ========
{
@@ -166,11 +211,11 @@ class DataComponentsPanel
list2.setEnabled(false);
scrollPane2.setViewportView(list2);
}
add(scrollPane2, "cell 2 0,growx");
add(scrollPane2, "cell 2 0");
//---- treeLabel ----
treeLabel.setText("JTree:");
add(treeLabel, "cell 0 1");
add(treeLabel, "cell 0 1,aligny top,growy 0");
//======== scrollPane3 ========
{
@@ -207,7 +252,7 @@ class DataComponentsPanel
tree1.setComponentPopupMenu(popupMenu2);
scrollPane3.setViewportView(tree1);
}
add(scrollPane3, "cell 1 1,growx");
add(scrollPane3, "cell 1 1");
//======== scrollPane4 ========
{
@@ -216,11 +261,11 @@ class DataComponentsPanel
tree2.setEnabled(false);
scrollPane4.setViewportView(tree2);
}
add(scrollPane4, "cell 2 1,growx");
add(scrollPane4, "cell 2 1");
//---- tableLabel ----
tableLabel.setText("JTable:");
add(tableLabel, "cell 0 2");
add(tableLabel, "cell 0 2,aligny top,growy 0");
//======== scrollPane5 ========
{
@@ -297,13 +342,61 @@ class DataComponentsPanel
table1.setComponentPopupMenu(popupMenu2);
scrollPane5.setViewportView(table1);
}
add(scrollPane5, "cell 1 2 2 1,growx,width 300");
add(scrollPane5, "cell 1 2 2 1,width 300");
//---- dndCheckBox ----
dndCheckBox.setText("enable drag and drop");
dndCheckBox.setMnemonic('D');
dndCheckBox.addActionListener(e -> dndChanged());
add(dndCheckBox, "cell 0 3 3 1");
//======== tableOptionsPanel ========
{
tableOptionsPanel.setLayout(new MigLayout(
"insets 0,hidemode 3",
// columns
"[]",
// rows
"[]0" +
"[]0" +
"[]0" +
"[]0" +
"[]0" +
"[]0" +
"[]0"));
//---- showHorizontalLinesCheckBox ----
showHorizontalLinesCheckBox.setText("show horizontal lines");
showHorizontalLinesCheckBox.addActionListener(e -> showHorizontalLinesChanged());
tableOptionsPanel.add(showHorizontalLinesCheckBox, "cell 0 0");
//---- showVerticalLinesCheckBox ----
showVerticalLinesCheckBox.setText("show vertical lines");
showVerticalLinesCheckBox.addActionListener(e -> showVerticalLinesChanged());
tableOptionsPanel.add(showVerticalLinesCheckBox, "cell 0 1");
//---- intercellSpacingCheckBox ----
intercellSpacingCheckBox.setText("intercell spacing");
intercellSpacingCheckBox.addActionListener(e -> intercellSpacingChanged());
tableOptionsPanel.add(intercellSpacingCheckBox, "cell 0 2");
//---- redGridColorCheckBox ----
redGridColorCheckBox.setText("red grid color");
redGridColorCheckBox.addActionListener(e -> redGridColorChanged());
tableOptionsPanel.add(redGridColorCheckBox, "cell 0 3");
//---- rowSelectionCheckBox ----
rowSelectionCheckBox.setText("row selection");
rowSelectionCheckBox.setSelected(true);
rowSelectionCheckBox.addActionListener(e -> rowSelectionChanged());
tableOptionsPanel.add(rowSelectionCheckBox, "cell 0 4");
//---- columnSelectionCheckBox ----
columnSelectionCheckBox.setText("column selection");
columnSelectionCheckBox.addActionListener(e -> columnSelectionChanged());
tableOptionsPanel.add(columnSelectionCheckBox, "cell 0 5");
//---- dndCheckBox ----
dndCheckBox.setText("enable drag and drop");
dndCheckBox.setMnemonic('D');
dndCheckBox.addActionListener(e -> dndChanged());
tableOptionsPanel.add(dndCheckBox, "cell 0 6");
}
add(tableOptionsPanel, "cell 3 2");
//======== popupMenu2 ========
{
@@ -336,6 +429,12 @@ class DataComponentsPanel
private JTree tree1;
private JTree tree2;
private JTable table1;
private JCheckBox showHorizontalLinesCheckBox;
private JCheckBox showVerticalLinesCheckBox;
private JCheckBox intercellSpacingCheckBox;
private JCheckBox redGridColorCheckBox;
private JCheckBox rowSelectionCheckBox;
private JCheckBox columnSelectionCheckBox;
private JCheckBox dndCheckBox;
// JFormDesigner - End of variables declaration //GEN-END:variables

View File

@@ -1,4 +1,4 @@
JFDML JFormDesigner: "7.0.1.0.272" Java: "13.0.2" encoding: "UTF-8"
JFDML JFormDesigner: "7.0.2.0.298" Java: "14" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
@@ -7,16 +7,16 @@ new FormModel {
"JavaCodeGenerator.defaultVariableLocal": true
}
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$layoutConstraints": "hidemode 3"
"$columnConstraints": "[][200][200]"
"$rowConstraints": "[][::200][::150][]"
"$layoutConstraints": "insets dialog,hidemode 3"
"$columnConstraints": "[][200,fill][200,fill][fill]"
"$rowConstraints": "[150,grow,sizegroup 1,fill][150,grow,sizegroup 1,fill][150,grow,sizegroup 1,fill]"
} ) {
name: "this"
add( new FormComponent( "javax.swing.JLabel" ) {
name: "listLabel"
"text": "JList:"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 0"
"value": "cell 0 0,aligny top,growy 0"
} )
add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
name: "scrollPane1"
@@ -46,7 +46,7 @@ new FormModel {
}
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 0,growx"
"value": "cell 1 0"
} )
add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
name: "scrollPane2"
@@ -76,13 +76,13 @@ new FormModel {
}
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 0,growx"
"value": "cell 2 0"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "treeLabel"
"text": "JTree:"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 1"
"value": "cell 0 1,aligny top,growy 0"
} )
add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
name: "scrollPane3"
@@ -150,7 +150,7 @@ new FormModel {
}
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 1,growx"
"value": "cell 1 1"
} )
add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
name: "scrollPane4"
@@ -162,13 +162,13 @@ new FormModel {
}
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 1,growx"
"value": "cell 2 1"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "tableLabel"
"text": "JTable:"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 2"
"value": "cell 0 2,aligny top,growy 0"
} )
add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
name: "scrollPane5"
@@ -307,22 +307,92 @@ new FormModel {
}
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 2 2 1,growx,width 300"
"value": "cell 1 2 2 1,width 300"
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "dndCheckBox"
"text": "enable drag and drop"
"mnemonic": 68
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "dndChanged", false ) )
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$layoutConstraints": "insets 0,hidemode 3"
"$columnConstraints": "[]"
"$rowConstraints": "[]0[]0[]0[]0[]0[]0[]0"
} ) {
name: "tableOptionsPanel"
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "showHorizontalLinesCheckBox"
"text": "show horizontal lines"
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "showHorizontalLinesChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 0"
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "showVerticalLinesCheckBox"
"text": "show vertical lines"
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "showVerticalLinesChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 1"
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "intercellSpacingCheckBox"
"text": "intercell spacing"
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "intercellSpacingChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 2"
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "redGridColorCheckBox"
"text": "red grid color"
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "redGridColorChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 3"
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "rowSelectionCheckBox"
"text": "row selection"
"selected": true
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "rowSelectionChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 4"
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "columnSelectionCheckBox"
"text": "column selection"
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "columnSelectionChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 5"
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "dndCheckBox"
"text": "enable drag and drop"
"mnemonic": 68
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "dndChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 6"
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 3 3 1"
"value": "cell 3 2"
} )
}, new FormLayoutConstraints( null ) {
"location": new java.awt.Point( 0, 0 )
"size": new java.awt.Dimension( 790, 715 )
"size": new java.awt.Dimension( 790, 745 )
} )
add( new FormContainer( "javax.swing.JPopupMenu", new FormLayoutManager( class javax.swing.JPopupMenu ) ) {
name: "popupMenu2"
@@ -346,7 +416,7 @@ new FormModel {
"text": "Noop Action"
} )
}, new FormLayoutConstraints( null ) {
"location": new java.awt.Point( 0, 740 )
"location": new java.awt.Point( 0, 800 )
} )
}
}

View File

@@ -20,17 +20,23 @@ import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.prefs.Preferences;
import javax.swing.*;
import javax.swing.text.DefaultEditorKit;
import javax.swing.text.StyleContext;
import com.formdev.flatlaf.FlatClientProperties;
import com.formdev.flatlaf.FlatLaf;
import com.formdev.flatlaf.demo.HintManager.Hint;
import com.formdev.flatlaf.demo.extras.*;
import com.formdev.flatlaf.demo.intellijthemes.*;
import com.formdev.flatlaf.extras.FlatAnimatedLafChange;
import com.formdev.flatlaf.extras.FlatSVGIcon;
import com.formdev.flatlaf.extras.FlatUIDefaultsInspector;
import com.formdev.flatlaf.extras.SVGUtils;
import com.formdev.flatlaf.ui.JBRCustomDecorations;
import net.miginfocom.layout.ConstraintParser;
import net.miginfocom.layout.LC;
import net.miginfocom.layout.UnitValue;
import net.miginfocom.swing.*;
/**
@@ -57,6 +63,61 @@ class DemoFrame
if( tabIndex >= 0 && tabIndex < tabbedPane.getTabCount() && tabIndex != tabbedPane.getSelectedIndex() )
tabbedPane.setSelectedIndex( tabIndex );
SwingUtilities.invokeLater( () -> {
showHints();
} );
}
@Override
public void dispose() {
super.dispose();
FlatUIDefaultsInspector.hide();
}
private void showHints() {
Hint fontMenuHint = new Hint(
"Use 'Font' menu to increase/decrease font size or try different fonts.",
fontMenu, SwingConstants.BOTTOM, "hint.fontMenu", null );
Hint optionsMenuHint = new Hint(
"Use 'Options' menu to try out various FlatLaf options.",
optionsMenu, SwingConstants.BOTTOM, "hint.optionsMenu", fontMenuHint );
Hint themesHint = new Hint(
"Use 'Themes' list to try out various themes.",
themesPanel, SwingConstants.LEFT, "hint.themesPanel", optionsMenuHint );
HintManager.showHint( themesHint );
}
private void clearHints() {
HintManager.hideAllHints();
Preferences state = DemoPrefs.getState();
state.remove( "hint.fontMenu" );
state.remove( "hint.optionsMenu" );
state.remove( "hint.themesPanel" );
}
private void showUIDefaultsInspector() {
FlatUIDefaultsInspector.show();
}
private void newActionPerformed() {
NewDialog newDialog = new NewDialog( this );
newDialog.setVisible( true );
}
private void openActionPerformed() {
JFileChooser chooser = new JFileChooser();
chooser.showOpenDialog( this );
}
private void saveAsActionPerformed() {
JFileChooser chooser = new JFileChooser();
chooser.showSaveDialog( this );
}
private void exitActionPerformed() {
@@ -110,6 +171,11 @@ class DemoFrame
System.setProperty( "flatlaf.animatedLafChange", String.valueOf( animatedLafChangeMenuItem.isSelected() ) );
}
private void showHintsChanged() {
clearHints();
showHints();
}
private void fontFamilyChanged( ActionEvent e ) {
String fontFamily = e.getActionCommand();
@@ -224,6 +290,7 @@ class DemoFrame
JMenu fileMenu = new JMenu();
JMenuItem newMenuItem = new JMenuItem();
JMenuItem openMenuItem = new JMenuItem();
JMenuItem saveAsMenuItem = new JMenuItem();
JMenuItem closeMenuItem = new JMenuItem();
JMenuItem exitMenuItem = new JMenuItem();
JMenu editMenu = new JMenu();
@@ -243,6 +310,7 @@ class DemoFrame
JMenuItem projectViewMenuItem = new JMenuItem();
JMenuItem structureViewMenuItem = new JMenuItem();
JMenuItem propertiesViewMenuItem = new JMenuItem();
JMenuItem menuItem2 = new JMenuItem();
JMenuItem menuItem1 = new JMenuItem();
JRadioButtonMenuItem radioButtonMenuItem1 = new JRadioButtonMenuItem();
JRadioButtonMenuItem radioButtonMenuItem2 = new JRadioButtonMenuItem();
@@ -251,12 +319,14 @@ class DemoFrame
JMenuItem restoreFontMenuItem = new JMenuItem();
JMenuItem incrFontMenuItem = new JMenuItem();
JMenuItem decrFontMenuItem = new JMenuItem();
JMenu optionsMenu = new JMenu();
optionsMenu = new JMenu();
windowDecorationsCheckBoxMenuItem = new JCheckBoxMenuItem();
menuBarEmbeddedCheckBoxMenuItem = new JCheckBoxMenuItem();
underlineMenuSelectionMenuItem = new JCheckBoxMenuItem();
alwaysShowMnemonicsMenuItem = new JCheckBoxMenuItem();
animatedLafChangeMenuItem = new JCheckBoxMenuItem();
JMenuItem showHintsMenuItem = new JMenuItem();
JMenuItem showUIDefaultsInspectorMenuItem = new JMenuItem();
JMenu helpMenu = new JMenu();
JMenuItem aboutMenuItem = new JMenuItem();
JToolBar toolBar1 = new JToolBar();
@@ -276,7 +346,7 @@ class DemoFrame
OptionPanePanel optionPanePanel = new OptionPanePanel();
ExtrasPanel extrasPanel1 = new ExtrasPanel();
controlBar = new ControlBar();
IJThemesPanel themesPanel = new IJThemesPanel();
themesPanel = new IJThemesPanel();
//======== this ========
setTitle("FlatLaf Demo");
@@ -296,15 +366,22 @@ class DemoFrame
newMenuItem.setText("New");
newMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
newMenuItem.setMnemonic('N');
newMenuItem.addActionListener(e -> menuItemActionPerformed(e));
newMenuItem.addActionListener(e -> newActionPerformed());
fileMenu.add(newMenuItem);
//---- openMenuItem ----
openMenuItem.setText("Open");
openMenuItem.setText("Open...");
openMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
openMenuItem.setMnemonic('O');
openMenuItem.addActionListener(e -> menuItemActionPerformed(e));
openMenuItem.addActionListener(e -> openActionPerformed());
fileMenu.add(openMenuItem);
//---- saveAsMenuItem ----
saveAsMenuItem.setText("Save As...");
saveAsMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
saveAsMenuItem.setMnemonic('S');
saveAsMenuItem.addActionListener(e -> saveAsActionPerformed());
fileMenu.add(saveAsMenuItem);
fileMenu.addSeparator();
//---- closeMenuItem ----
@@ -435,6 +512,11 @@ class DemoFrame
}
viewMenu.add(menu1);
//---- menuItem2 ----
menuItem2.setText("Disabled Item");
menuItem2.setEnabled(false);
viewMenu.add(menuItem2);
//---- menuItem1 ----
menuItem1.setText("<html>some <b color=\"red\">HTML</b> <i color=\"blue\">text</i></html>");
viewMenu.add(menuItem1);
@@ -516,6 +598,16 @@ class DemoFrame
animatedLafChangeMenuItem.setSelected(true);
animatedLafChangeMenuItem.addActionListener(e -> animatedLafChangeChanged());
optionsMenu.add(animatedLafChangeMenuItem);
//---- showHintsMenuItem ----
showHintsMenuItem.setText("Show hints");
showHintsMenuItem.addActionListener(e -> showHintsChanged());
optionsMenu.add(showHintsMenuItem);
//---- showUIDefaultsInspectorMenuItem ----
showUIDefaultsInspectorMenuItem.setText("Show UI Defaults Inspector");
showUIDefaultsInspectorMenuItem.addActionListener(e -> showUIDefaultsInspector());
optionsMenu.add(showUIDefaultsInspectorMenuItem);
}
menuBar1.add(optionsMenu);
@@ -627,10 +719,23 @@ class DemoFrame
.getSupportsWindowDecorations() || JBRCustomDecorations.isSupported();
windowDecorationsCheckBoxMenuItem.setEnabled( supportsWindowDecorations && !JBRCustomDecorations.isSupported() );
menuBarEmbeddedCheckBoxMenuItem.setEnabled( supportsWindowDecorations );
// remove contentPanel bottom insets
MigLayout layout = (MigLayout) contentPanel.getLayout();
LC lc = ConstraintParser.parseLayoutConstraint( (String) layout.getLayoutConstraints() );
UnitValue[] insets = lc.getInsets();
lc.setInsets( new UnitValue[] {
insets[0],
insets[1],
new UnitValue( 0, UnitValue.PIXEL, null ),
insets[3]
} );
layout.setLayoutConstraints( lc );
}
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
private JMenu fontMenu;
private JMenu optionsMenu;
private JCheckBoxMenuItem windowDecorationsCheckBoxMenuItem;
private JCheckBoxMenuItem menuBarEmbeddedCheckBoxMenuItem;
private JCheckBoxMenuItem underlineMenuSelectionMenuItem;
@@ -638,5 +743,6 @@ class DemoFrame
private JCheckBoxMenuItem animatedLafChangeMenuItem;
private JTabbedPane tabbedPane;
private ControlBar controlBar;
private IJThemesPanel themesPanel;
// JFormDesigner - End of variables declaration //GEN-END:variables
}

View File

@@ -1,4 +1,4 @@
JFDML JFormDesigner: "7.0.2.0.298" Java: "14.0.2" encoding: "UTF-8"
JFDML JFormDesigner: "7.0.2.0.298" Java: "14" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
@@ -114,6 +114,9 @@ new FormModel {
} )
add( new FormComponent( "com.formdev.flatlaf.demo.intellijthemes.IJThemesPanel" ) {
name: "themesPanel"
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
}, new FormLayoutConstraints( class java.lang.String ) {
"value": "East"
} )
@@ -128,14 +131,21 @@ new FormModel {
"text": "New"
"accelerator": static javax.swing.KeyStroke getKeyStroke( 78, 4226, false )
"mnemonic": 78
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "menuItemActionPerformed", true ) )
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "newActionPerformed", false ) )
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "openMenuItem"
"text": "Open"
"text": "Open..."
"accelerator": static javax.swing.KeyStroke getKeyStroke( 79, 4226, false )
"mnemonic": 79
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "menuItemActionPerformed", true ) )
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "openActionPerformed", false ) )
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "saveAsMenuItem"
"text": "Save As..."
"accelerator": static javax.swing.KeyStroke getKeyStroke( 83, 4226, false )
"mnemonic": 83
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "saveAsActionPerformed", false ) )
} )
add( new FormComponent( "javax.swing.JPopupMenu$Separator" ) {
name: "separator2"
@@ -264,6 +274,11 @@ new FormModel {
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "menuItemActionPerformed", true ) )
} )
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem2"
"text": "Disabled Item"
"enabled": false
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem1"
"text": "<html>some <b color=\"red\">HTML</b> <i color=\"blue\">text</i></html>"
@@ -322,6 +337,9 @@ new FormModel {
add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
name: "optionsMenu"
"text": "Options"
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
add( new FormComponent( "javax.swing.JCheckBoxMenuItem" ) {
name: "windowDecorationsCheckBoxMenuItem"
"text": "Window decorations"
@@ -365,6 +383,16 @@ new FormModel {
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "animatedLafChangeChanged", false ) )
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "showHintsMenuItem"
"text": "Show hints"
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "showHintsChanged", false ) )
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "showUIDefaultsInspectorMenuItem"
"text": "Show UI Defaults Inspector"
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "showUIDefaultsInspector", false ) )
} )
} )
add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
name: "helpMenu"

View File

@@ -16,10 +16,13 @@
package com.formdev.flatlaf.demo;
import java.awt.Dimension;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import com.formdev.flatlaf.FlatLaf;
import com.formdev.flatlaf.extras.FlatInspector;
import com.formdev.flatlaf.extras.FlatUIDefaultsInspector;
import com.formdev.flatlaf.util.SystemInfo;
/**
@@ -30,6 +33,8 @@ public class FlatLafDemo
static final String PREFS_ROOT_PATH = "/flatlaf-demo";
static final String KEY_TAB = "tab";
static boolean screenshotsMode = Boolean.parseBoolean( System.getProperty( "flatlaf.demo.screenshotsMode" ) );
public static void main( String[] args ) {
// on macOS enable screen menu bar
if( SystemInfo.isMacOS && System.getProperty( "apple.laf.useScreenMenuBar" ) == null )
@@ -42,15 +47,22 @@ public class FlatLafDemo
JFrame.setDefaultLookAndFeelDecorated( true );
JDialog.setDefaultLookAndFeelDecorated( true );
// application specific UI defaults
FlatLaf.registerCustomDefaultsSource( "com.formdev.flatlaf.demo" );
// set look and feel
DemoPrefs.initLaf( args );
// install inspector
// install inspectors
FlatInspector.install( "ctrl shift alt X" );
FlatUIDefaultsInspector.install( "ctrl shift alt Y" );
// create frame
DemoFrame frame = new DemoFrame();
if( FlatLafDemo.screenshotsMode )
frame.setPreferredSize( new Dimension( 1280, 620 ) );
// show frame
frame.pack();
frame.setLocationRelativeTo( null );

View File

@@ -0,0 +1,219 @@
/*
* Copyright 2020 FormDev Software GmbH
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.formdev.flatlaf.demo;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.util.ArrayList;
import java.util.List;
import javax.swing.*;
import com.formdev.flatlaf.ui.FlatDropShadowBorder;
import com.formdev.flatlaf.ui.FlatPopupMenuBorder;
import com.formdev.flatlaf.ui.FlatUIUtils;
import com.formdev.flatlaf.util.UIScale;
import net.miginfocom.swing.*;
/**
* @author Karl Tauber
*/
class HintManager
{
private static final List<HintPanel> hintPanels = new ArrayList<>();
static void showHint( Hint hint ) {
// check whether user already closed the hint
if( DemoPrefs.getState().getBoolean( hint.prefsKey, false ) ) {
if( hint.nextHint != null )
showHint( hint.nextHint );
return;
}
HintPanel hintPanel = new HintPanel( hint );
hintPanel.showHint();
hintPanels.add( hintPanel );
}
static void hideAllHints() {
HintPanel[] hintPanels2 = hintPanels.toArray( new HintPanel[hintPanels.size()] );
for( HintPanel hintPanel : hintPanels2 )
hintPanel.hideHint();
}
//---- class HintPanel ----------------------------------------------------
static class Hint
{
private final String message;
private final Component owner;
private final int position;
private final String prefsKey;
private final Hint nextHint;
Hint( String message, Component owner, int position, String prefsKey, Hint nextHint ) {
this.message = message;
this.owner = owner;
this.position = position;
this.prefsKey = prefsKey;
this.nextHint = nextHint;
}
}
//---- class HintPanel ----------------------------------------------------
private static class HintPanel
extends JPanel
{
private final Hint hint;
private JPanel popup;
private HintPanel( Hint hint ) {
this.hint = hint;
initComponents();
hintLabel.setText( "<html>" + hint.message + "</html>" );
// grab all mouse events to avoid that components overlapped
// by the hint panel receive them
addMouseListener( new MouseAdapter() {} );
}
@Override
public void updateUI() {
super.updateUI();
setBackground( UIManager.getColor( "HintPanel.backgroundColor" ) );
setBorder( new FlatPopupMenuBorder() );
}
void showHint() {
JRootPane rootPane = SwingUtilities.getRootPane( hint.owner );
if( rootPane == null )
return;
JLayeredPane layeredPane = rootPane.getLayeredPane();
// create a popup panel that has a drop shadow
popup = new JPanel( new BorderLayout() ) {
@Override
public void updateUI() {
super.updateUI();
setBorder( new FlatDropShadowBorder(
UIManager.getColor( "Popup.dropShadowColor" ),
UIManager.getInsets( "Popup.dropShadowInsets" ),
FlatUIUtils.getUIFloat( "Popup.dropShadowOpacity", 0.5f ) ) );
// use invokeLater because at this time the UI delegates
// of child components are not yet updated
EventQueue.invokeLater( () -> {
validate();
setSize( getPreferredSize() );
} );
}
};
popup.setOpaque( false );
popup.add( this );
// calculate x/y location for hint popup
Point pt = SwingUtilities.convertPoint( hint.owner, 0, 0, layeredPane );
int x = pt.x;
int y = pt.y;
Dimension size = popup.getPreferredSize();
int gap = UIScale.scale( 6 );
switch( hint.position ) {
case SwingConstants.LEFT:
x -= size.width + gap;
break;
case SwingConstants.TOP:
y -= size.height + gap;
break;
case SwingConstants.RIGHT:
x += hint.owner.getWidth() + gap;
break;
case SwingConstants.BOTTOM:
y += hint.owner.getHeight() + gap;
break;
}
// set hint popup size and show it
popup.setBounds( x, y, size.width, size.height );
layeredPane.add( popup, JLayeredPane.POPUP_LAYER );
}
void hideHint() {
if( popup != null ) {
Container parent = popup.getParent();
if( parent != null ) {
parent.remove( popup );
parent.repaint( popup.getX(), popup.getY(), popup.getWidth(), popup.getHeight() );
}
}
hintPanels.remove( this );
}
private void gotIt() {
// hide hint
hideHint();
// remember that user closed the hint
DemoPrefs.getState().putBoolean( hint.prefsKey, true );
// show next hint (if any)
if( hint.nextHint != null )
HintManager.showHint( hint.nextHint );
}
private void initComponents() {
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
hintLabel = new JLabel();
gotItButton = new JButton();
//======== this ========
setLayout(new MigLayout(
"insets dialog,hidemode 3",
// columns
"[::200,fill]",
// rows
"[]para" +
"[]"));
//---- hintLabel ----
hintLabel.setText("hint");
add(hintLabel, "cell 0 0");
//---- gotItButton ----
gotItButton.setText("Got it!");
gotItButton.setFocusable(false);
gotItButton.addActionListener(e -> gotIt());
add(gotItButton, "cell 0 1,alignx right,growx 0");
// JFormDesigner - End of component initialization //GEN-END:initComponents
}
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
private JLabel hintLabel;
private JButton gotItButton;
// JFormDesigner - End of variables declaration //GEN-END:variables
}
}

View File

@@ -0,0 +1,34 @@
JFDML JFormDesigner: "7.0.2.0.298" Java: "14" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
root: new FormRoot {
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$layoutConstraints": "insets dialog,hidemode 3"
"$columnConstraints": "[::200,fill]"
"$rowConstraints": "[]para[]"
} ) {
name: "panel"
auxiliary() {
"JavaCodeGenerator.className": "HintPanel"
}
add( new FormComponent( "javax.swing.JLabel" ) {
name: "hintLabel"
"text": "hint"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 0"
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "gotItButton"
"text": "Got it!"
"focusable": false
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "gotIt", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 1,alignx right,growx 0"
} )
}, new FormLayoutConstraints( null ) {
"location": new java.awt.Point( 0, 0 )
"size": new java.awt.Dimension( 400, 300 )
} )
}
}

View File

@@ -59,7 +59,6 @@ class MoreComponentsPanel
JSeparator separator2 = new JSeparator();
JSlider slider2 = new JSlider();
JSlider slider4 = new JSlider();
JScrollPane scrollPane14 = new JScrollPane();
progressBar3 = new JProgressBar();
progressBar4 = new JProgressBar();
JToolBar toolBar2 = new JToolBar();
@@ -67,11 +66,12 @@ class MoreComponentsPanel
JButton button10 = new JButton();
JButton button11 = new JButton();
JToggleButton toggleButton7 = new JToggleButton();
JPanel panel2 = new JPanel();
JLabel scrollBarLabel = new JLabel();
JScrollBar scrollBar1 = new JScrollBar();
JLabel label4 = new JLabel();
JScrollBar scrollBar4 = new JScrollBar();
JPanel panel3 = new JPanel();
JLabel label4 = new JLabel();
JLabel label3 = new JLabel();
JScrollPane scrollPane15 = new JScrollPane();
JEditorPane editorPane6 = new JEditorPane();
@@ -81,7 +81,6 @@ class MoreComponentsPanel
JScrollBar scrollBar6 = new JScrollBar();
JLabel separatorLabel = new JLabel();
JSeparator separator1 = new JSeparator();
JPanel panel2 = new JPanel();
JLabel sliderLabel = new JLabel();
JSlider slider1 = new JSlider();
JSlider slider6 = new JSlider();
@@ -105,13 +104,12 @@ class MoreComponentsPanel
//======== this ========
setLayout(new MigLayout(
"hidemode 3",
"insets dialog,hidemode 3",
// columns
"[]" +
"[]" +
"[]" +
"[]" +
"[]" +
"[]",
// rows
"[]" +
@@ -142,7 +140,7 @@ class MoreComponentsPanel
}
scrollPane13.setViewportView(panel1);
}
add(scrollPane13, "cell 1 0,grow,width 70,height 70");
add(scrollPane13, "cell 1 0,grow,width 70,height 40");
add(scrollBar2, "cell 2 0 1 6,growy");
//---- scrollBar3 ----
@@ -165,7 +163,7 @@ class MoreComponentsPanel
//---- slider2 ----
slider2.setOrientation(SwingConstants.VERTICAL);
slider2.setValue(30);
add(slider2, "cell 2 0 1 6,growy");
add(slider2, "cell 2 0 1 6,growy,height 100");
//---- slider4 ----
slider4.setMinorTickSpacing(10);
@@ -174,19 +172,18 @@ class MoreComponentsPanel
slider4.setPaintLabels(true);
slider4.setOrientation(SwingConstants.VERTICAL);
slider4.setValue(30);
add(slider4, "cell 2 0 1 6,growy");
add(scrollPane14, "cell 3 0,grow");
add(slider4, "cell 2 0 1 6,growy,height 100");
//---- progressBar3 ----
progressBar3.setOrientation(SwingConstants.VERTICAL);
progressBar3.setValue(60);
add(progressBar3, "cell 4 0 1 6,growy");
add(progressBar3, "cell 2 0 1 6,growy");
//---- progressBar4 ----
progressBar4.setOrientation(SwingConstants.VERTICAL);
progressBar4.setValue(60);
progressBar4.setStringPainted(true);
add(progressBar4, "cell 4 0 1 6,growy");
add(progressBar4, "cell 2 0 1 6,growy");
//======== toolBar2 ========
{
@@ -209,7 +206,14 @@ class MoreComponentsPanel
toggleButton7.setIcon(UIManager.getIcon("Tree.closedIcon"));
toolBar2.add(toggleButton7);
}
add(toolBar2, "cell 4 0 1 6,growy");
add(toolBar2, "cell 2 0 1 6,growy");
//======== panel2 ========
{
panel2.setBorder(new TitledBorder("TitledBorder"));
panel2.setLayout(new FlowLayout());
}
add(panel2, "cell 3 0 1 6,grow");
//---- scrollBarLabel ----
scrollBarLabel.setText("JScrollBar:");
@@ -219,10 +223,6 @@ class MoreComponentsPanel
scrollBar1.setOrientation(Adjustable.HORIZONTAL);
add(scrollBar1, "cell 1 1,growx");
//---- label4 ----
label4.setText("HTML:");
add(label4, "cell 5 1");
//---- scrollBar4 ----
scrollBar4.setOrientation(Adjustable.HORIZONTAL);
scrollBar4.setEnabled(false);
@@ -238,11 +238,16 @@ class MoreComponentsPanel
// rows
"[]" +
"[]" +
"[]" +
"[]"));
//---- label4 ----
label4.setText("HTML:");
panel3.add(label4, "cell 0 0");
//---- label3 ----
label3.setText("<html>JLabel HTML<br>Sample <b>content</b><br> <u>text</u> with <a href=\"#\">link</a></html>");
panel3.add(label3, "cell 0 0");
panel3.add(label3, "cell 0 1");
//======== scrollPane15 ========
{
@@ -252,7 +257,7 @@ class MoreComponentsPanel
editorPane6.setText("JEditorPane HTML<br>Sample <b>content</b><br> <u>text</u> with <a href=\"#\">link</a>");
scrollPane15.setViewportView(editorPane6);
}
panel3.add(scrollPane15, "cell 0 1,grow");
panel3.add(scrollPane15, "cell 0 2,grow");
//======== scrollPane16 ========
{
@@ -262,9 +267,9 @@ class MoreComponentsPanel
textPane6.setText("JTextPane HTML<br>Sample <b>content</b><br> <u>text</u> with <a href=\"#\">link</a>");
scrollPane16.setViewportView(textPane6);
}
panel3.add(scrollPane16, "cell 0 2,grow");
panel3.add(scrollPane16, "cell 0 3,grow");
}
add(panel3, "cell 5 2 1 9,aligny top,growy 0");
add(panel3, "cell 4 0 1 8,aligny top,growy 0");
//---- scrollBar5 ----
scrollBar5.setOrientation(Adjustable.HORIZONTAL);
@@ -282,13 +287,6 @@ class MoreComponentsPanel
add(separatorLabel, "cell 0 5");
add(separator1, "cell 1 5,growx");
//======== panel2 ========
{
panel2.setBorder(new TitledBorder("TitledBorder"));
panel2.setLayout(new FlowLayout());
}
add(panel2, "cell 3 5,grow");
//---- sliderLabel ----
sliderLabel.setText("JSlider:");
add(sliderLabel, "cell 0 6");
@@ -389,6 +387,17 @@ class MoreComponentsPanel
}
add(toolBar1, "cell 1 10 3 1,growx");
// JFormDesigner - End of component initialization //GEN-END:initComponents
if( FlatLafDemo.screenshotsMode ) {
Component[] components = new Component[] {
indeterminateCheckBox,
toolTipLabel, toolTip1, toolTip2,
toolBarLabel, toolBar1, toolBar2,
};
for( Component c : components )
c.setVisible( false );
}
}
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables

View File

@@ -1,4 +1,4 @@
JFDML JFormDesigner: "7.0.1.0.272" Java: "13.0.2" encoding: "UTF-8"
JFDML JFormDesigner: "7.0.2.0.298" Java: "14" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
@@ -7,8 +7,8 @@ new FormModel {
"JavaCodeGenerator.defaultVariableLocal": true
}
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$layoutConstraints": "hidemode 3"
"$columnConstraints": "[][][][][][]"
"$layoutConstraints": "insets dialog,hidemode 3"
"$columnConstraints": "[][][][][]"
"$rowConstraints": "[][][][][][][][][][][]"
} ) {
name: "this"
@@ -27,7 +27,7 @@ new FormModel {
"preferredSize": new java.awt.Dimension( 200, 200 )
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 0,grow,width 70,height 70"
"value": "cell 1 0,grow,width 70,height 40"
} )
add( new FormComponent( "javax.swing.JScrollBar" ) {
name: "scrollBar2"
@@ -64,7 +64,7 @@ new FormModel {
"orientation": 1
"value": 30
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 0 1 6,growy"
"value": "cell 2 0 1 6,growy,height 100"
} )
add( new FormComponent( "javax.swing.JSlider" ) {
name: "slider4"
@@ -75,12 +75,7 @@ new FormModel {
"orientation": 1
"value": 30
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 0 1 6,growy"
} )
add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
name: "scrollPane14"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 0,grow"
"value": "cell 2 0 1 6,growy,height 100"
} )
add( new FormComponent( "javax.swing.JProgressBar" ) {
name: "progressBar3"
@@ -90,7 +85,7 @@ new FormModel {
"JavaCodeGenerator.variableLocal": false
}
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 4 0 1 6,growy"
"value": "cell 2 0 1 6,growy"
} )
add( new FormComponent( "javax.swing.JProgressBar" ) {
name: "progressBar4"
@@ -101,7 +96,7 @@ new FormModel {
"JavaCodeGenerator.variableLocal": false
}
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 4 0 1 6,growy"
"value": "cell 2 0 1 6,growy"
} )
add( new FormContainer( "javax.swing.JToolBar", new FormLayoutManager( class javax.swing.JToolBar ) ) {
name: "toolBar2"
@@ -126,7 +121,13 @@ new FormModel {
"icon": new com.jformdesigner.model.SwingIcon( 2, "Tree.closedIcon" )
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 4 0 1 6,growy"
"value": "cell 2 0 1 6,growy"
} )
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.FlowLayout ) ) {
name: "panel2"
"border": new javax.swing.border.TitledBorder( "TitledBorder" )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 0 1 6,grow"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "scrollBarLabel"
@@ -140,12 +141,6 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 1,growx"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label4"
"text": "HTML:"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 5 1"
} )
add( new FormComponent( "javax.swing.JScrollBar" ) {
name: "scrollBar4"
"orientation": 0
@@ -155,16 +150,22 @@ new FormModel {
} )
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$columnConstraints": "[]"
"$rowConstraints": "[][][]"
"$rowConstraints": "[][][][]"
"$layoutConstraints": "ltr,insets 0,hidemode 3"
} ) {
name: "panel3"
"opaque": false
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label4"
"text": "HTML:"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 0"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label3"
"text": "<html>JLabel HTML<br>Sample <b>content</b><br> <u>text</u> with <a href=\"#\">link</a></html>"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 0"
"value": "cell 0 1"
} )
add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
name: "scrollPane15"
@@ -174,7 +175,7 @@ new FormModel {
"text": "JEditorPane HTML<br>Sample <b>content</b><br> <u>text</u> with <a href=\"#\">link</a>"
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 1,grow"
"value": "cell 0 2,grow"
} )
add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
name: "scrollPane16"
@@ -184,10 +185,10 @@ new FormModel {
"text": "JTextPane HTML<br>Sample <b>content</b><br> <u>text</u> with <a href=\"#\">link</a>"
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 2,grow"
"value": "cell 0 3,grow"
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 5 2 1 9,aligny top,growy 0"
"value": "cell 4 0 1 8,aligny top,growy 0"
} )
add( new FormComponent( "javax.swing.JScrollBar" ) {
name: "scrollBar5"
@@ -215,12 +216,6 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 5,growx"
} )
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.FlowLayout ) ) {
name: "panel2"
"border": new javax.swing.border.TitledBorder( "TitledBorder" )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 5,grow"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "sliderLabel"
"text": "JSlider:"
@@ -365,7 +360,7 @@ new FormModel {
} )
}, new FormLayoutConstraints( null ) {
"location": new java.awt.Point( 0, 0 )
"size": new java.awt.Dimension( 790, 715 )
"size": new java.awt.Dimension( 700, 420 )
} )
}
}

View File

@@ -0,0 +1,393 @@
/*
* Copyright 2020 FormDev Software GmbH
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.formdev.flatlaf.demo;
import java.awt.*;
import java.awt.event.KeyEvent;
import javax.swing.*;
import net.miginfocom.swing.*;
/**
* @author Karl Tauber
*/
class NewDialog
extends JDialog
{
NewDialog( Window owner ) {
super( owner );
initComponents();
// hide menubar, which is here for testing
menuBar1.setVisible( false );
getRootPane().setDefaultButton( okButton );
// register ESC key to close frame
((JComponent)getContentPane()).registerKeyboardAction(
e -> dispose(),
KeyStroke.getKeyStroke( KeyEvent.VK_ESCAPE, 0, false ),
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT );
}
private void okActionPerformed() {
dispose();
}
private void cancelActionPerformed() {
dispose();
}
private void initComponents() {
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
dialogPane = new JPanel();
contentPanel = new JPanel();
label1 = new JLabel();
textField1 = new JTextField();
label3 = new JLabel();
comboBox2 = new JComboBox<>();
label2 = new JLabel();
comboBox1 = new JComboBox<>();
buttonBar = new JPanel();
okButton = new JButton();
cancelButton = new JButton();
menuBar1 = new JMenuBar();
menu1 = new JMenu();
menuItem8 = new JMenuItem();
menuItem7 = new JMenuItem();
menuItem6 = new JMenuItem();
menuItem5 = new JMenuItem();
menuItem4 = new JMenuItem();
menuItem3 = new JMenuItem();
menuItem2 = new JMenuItem();
menuItem1 = new JMenuItem();
menu2 = new JMenu();
menuItem18 = new JMenuItem();
menuItem17 = new JMenuItem();
menuItem16 = new JMenuItem();
menuItem15 = new JMenuItem();
menuItem14 = new JMenuItem();
menuItem13 = new JMenuItem();
menuItem12 = new JMenuItem();
menuItem11 = new JMenuItem();
menuItem10 = new JMenuItem();
menuItem9 = new JMenuItem();
menu3 = new JMenu();
menuItem25 = new JMenuItem();
menuItem26 = new JMenuItem();
menuItem24 = new JMenuItem();
menuItem23 = new JMenuItem();
menuItem22 = new JMenuItem();
menuItem21 = new JMenuItem();
menuItem20 = new JMenuItem();
menuItem19 = new JMenuItem();
popupMenu1 = new JPopupMenu();
cutMenuItem = new JMenuItem();
copyMenuItem = new JMenuItem();
pasteMenuItem = new JMenuItem();
//======== this ========
setTitle("New");
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
setModal(true);
Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
//======== dialogPane ========
{
dialogPane.setLayout(new BorderLayout());
//======== contentPanel ========
{
contentPanel.setLayout(new MigLayout(
"insets dialog,hidemode 3",
// columns
"[fill]" +
"[grow,fill]",
// rows
"[]" +
"[]" +
"[]"));
//---- label1 ----
label1.setText("Name:");
contentPanel.add(label1, "cell 0 0");
//---- textField1 ----
textField1.setComponentPopupMenu(popupMenu1);
contentPanel.add(textField1, "cell 1 0");
//---- label3 ----
label3.setText("Package:");
contentPanel.add(label3, "cell 0 1");
//---- comboBox2 ----
comboBox2.setEditable(true);
comboBox2.setModel(new DefaultComboBoxModel<>(new String[] {
"com.myapp",
"com.myapp.core",
"com.myapp.ui",
"com.myapp.util",
"com.myapp.extras",
"com.myapp.components",
"com.myapp.dialogs",
"com.myapp.windows"
}));
contentPanel.add(comboBox2, "cell 1 1");
//---- label2 ----
label2.setText("Type:");
contentPanel.add(label2, "cell 0 2");
//---- comboBox1 ----
comboBox1.setModel(new DefaultComboBoxModel<>(new String[] {
"Class",
"Interface",
"Package",
"Annotation",
"Enum",
"Record",
"Java Project",
"Project",
"Folder",
"File"
}));
contentPanel.add(comboBox1, "cell 1 2");
}
dialogPane.add(contentPanel, BorderLayout.CENTER);
//======== buttonBar ========
{
buttonBar.setLayout(new MigLayout(
"insets dialog,alignx right",
// columns
"[button,fill]" +
"[button,fill]",
// rows
null));
//---- okButton ----
okButton.setText("OK");
okButton.addActionListener(e -> okActionPerformed());
buttonBar.add(okButton, "cell 0 0");
//---- cancelButton ----
cancelButton.setText("Cancel");
cancelButton.addActionListener(e -> cancelActionPerformed());
buttonBar.add(cancelButton, "cell 1 0");
}
dialogPane.add(buttonBar, BorderLayout.SOUTH);
//======== menuBar1 ========
{
//======== menu1 ========
{
menu1.setText("text");
//---- menuItem8 ----
menuItem8.setText("text");
menu1.add(menuItem8);
//---- menuItem7 ----
menuItem7.setText("text");
menu1.add(menuItem7);
//---- menuItem6 ----
menuItem6.setText("text");
menu1.add(menuItem6);
//---- menuItem5 ----
menuItem5.setText("text");
menu1.add(menuItem5);
//---- menuItem4 ----
menuItem4.setText("text");
menu1.add(menuItem4);
//---- menuItem3 ----
menuItem3.setText("text");
menu1.add(menuItem3);
//---- menuItem2 ----
menuItem2.setText("text");
menu1.add(menuItem2);
//---- menuItem1 ----
menuItem1.setText("text");
menu1.add(menuItem1);
}
menuBar1.add(menu1);
//======== menu2 ========
{
menu2.setText("text");
//---- menuItem18 ----
menuItem18.setText("text");
menu2.add(menuItem18);
//---- menuItem17 ----
menuItem17.setText("text");
menu2.add(menuItem17);
//---- menuItem16 ----
menuItem16.setText("text");
menu2.add(menuItem16);
//---- menuItem15 ----
menuItem15.setText("text");
menu2.add(menuItem15);
//---- menuItem14 ----
menuItem14.setText("text");
menu2.add(menuItem14);
//---- menuItem13 ----
menuItem13.setText("text");
menu2.add(menuItem13);
//---- menuItem12 ----
menuItem12.setText("text");
menu2.add(menuItem12);
//---- menuItem11 ----
menuItem11.setText("text");
menu2.add(menuItem11);
//---- menuItem10 ----
menuItem10.setText("text");
menu2.add(menuItem10);
//---- menuItem9 ----
menuItem9.setText("text");
menu2.add(menuItem9);
}
menuBar1.add(menu2);
//======== menu3 ========
{
menu3.setText("text");
//---- menuItem25 ----
menuItem25.setText("text");
menu3.add(menuItem25);
//---- menuItem26 ----
menuItem26.setText("text");
menu3.add(menuItem26);
//---- menuItem24 ----
menuItem24.setText("text");
menu3.add(menuItem24);
//---- menuItem23 ----
menuItem23.setText("text");
menu3.add(menuItem23);
//---- menuItem22 ----
menuItem22.setText("text");
menu3.add(menuItem22);
//---- menuItem21 ----
menuItem21.setText("text");
menu3.add(menuItem21);
//---- menuItem20 ----
menuItem20.setText("text");
menu3.add(menuItem20);
//---- menuItem19 ----
menuItem19.setText("text");
menu3.add(menuItem19);
}
menuBar1.add(menu3);
}
dialogPane.add(menuBar1, BorderLayout.NORTH);
}
contentPane.add(dialogPane, BorderLayout.CENTER);
pack();
setLocationRelativeTo(getOwner());
//======== popupMenu1 ========
{
//---- cutMenuItem ----
cutMenuItem.setText("Cut");
cutMenuItem.setMnemonic('C');
popupMenu1.add(cutMenuItem);
//---- copyMenuItem ----
copyMenuItem.setText("Copy");
copyMenuItem.setMnemonic('O');
popupMenu1.add(copyMenuItem);
//---- pasteMenuItem ----
pasteMenuItem.setText("Paste");
pasteMenuItem.setMnemonic('P');
popupMenu1.add(pasteMenuItem);
}
// JFormDesigner - End of component initialization //GEN-END:initComponents
}
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
private JPanel dialogPane;
private JPanel contentPanel;
private JLabel label1;
private JTextField textField1;
private JLabel label3;
private JComboBox<String> comboBox2;
private JLabel label2;
private JComboBox<String> comboBox1;
private JPanel buttonBar;
private JButton okButton;
private JButton cancelButton;
private JMenuBar menuBar1;
private JMenu menu1;
private JMenuItem menuItem8;
private JMenuItem menuItem7;
private JMenuItem menuItem6;
private JMenuItem menuItem5;
private JMenuItem menuItem4;
private JMenuItem menuItem3;
private JMenuItem menuItem2;
private JMenuItem menuItem1;
private JMenu menu2;
private JMenuItem menuItem18;
private JMenuItem menuItem17;
private JMenuItem menuItem16;
private JMenuItem menuItem15;
private JMenuItem menuItem14;
private JMenuItem menuItem13;
private JMenuItem menuItem12;
private JMenuItem menuItem11;
private JMenuItem menuItem10;
private JMenuItem menuItem9;
private JMenu menu3;
private JMenuItem menuItem25;
private JMenuItem menuItem26;
private JMenuItem menuItem24;
private JMenuItem menuItem23;
private JMenuItem menuItem22;
private JMenuItem menuItem21;
private JMenuItem menuItem20;
private JMenuItem menuItem19;
private JPopupMenu popupMenu1;
private JMenuItem cutMenuItem;
private JMenuItem copyMenuItem;
private JMenuItem pasteMenuItem;
// JFormDesigner - End of variables declaration //GEN-END:variables
}

View File

@@ -0,0 +1,254 @@
JFDML JFormDesigner: "7.0.2.0.298" Java: "14" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
root: new FormRoot {
add( new FormWindow( "javax.swing.JDialog", new FormLayoutManager( class java.awt.BorderLayout ) ) {
name: "this"
"title": "New"
"defaultCloseOperation": 2
"modal": true
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.BorderLayout ) ) {
name: "dialogPane"
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$layoutConstraints": "insets dialog,hidemode 3"
"$columnConstraints": "[fill][grow,fill]"
"$rowConstraints": "[][][]"
} ) {
name: "contentPanel"
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label1"
"text": "Name:"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 0"
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "textField1"
"componentPopupMenu": new FormReference( "popupMenu1" )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 0"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label3"
"text": "Package:"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 1"
} )
add( new FormComponent( "javax.swing.JComboBox" ) {
name: "comboBox2"
"editable": true
"model": new javax.swing.DefaultComboBoxModel {
selectedItem: "com.myapp"
addElement( "com.myapp" )
addElement( "com.myapp.core" )
addElement( "com.myapp.ui" )
addElement( "com.myapp.util" )
addElement( "com.myapp.extras" )
addElement( "com.myapp.components" )
addElement( "com.myapp.dialogs" )
addElement( "com.myapp.windows" )
}
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 1"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label2"
"text": "Type:"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 2"
} )
add( new FormComponent( "javax.swing.JComboBox" ) {
name: "comboBox1"
"model": new javax.swing.DefaultComboBoxModel {
selectedItem: "Class"
addElement( "Class" )
addElement( "Interface" )
addElement( "Package" )
addElement( "Annotation" )
addElement( "Enum" )
addElement( "Record" )
addElement( "Java Project" )
addElement( "Project" )
addElement( "Folder" )
addElement( "File" )
}
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 2"
} )
}, new FormLayoutConstraints( class java.lang.String ) {
"value": "Center"
} )
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$layoutConstraints": "insets dialog,alignx right"
"$columnConstraints": "[button,fill][button,fill]"
"$rowSpecs": "[fill]"
} ) {
name: "buttonBar"
add( new FormComponent( "javax.swing.JButton" ) {
name: "okButton"
"text": "OK"
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "okActionPerformed", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 0"
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "cancelButton"
"text": "Cancel"
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "cancelActionPerformed", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 0"
} )
}, new FormLayoutConstraints( class java.lang.String ) {
"value": "South"
} )
add( new FormContainer( "javax.swing.JMenuBar", new FormLayoutManager( class javax.swing.JMenuBar ) ) {
name: "menuBar1"
add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
name: "menu1"
"text": "text"
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem8"
"text": "text"
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem7"
"text": "text"
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem6"
"text": "text"
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem5"
"text": "text"
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem4"
"text": "text"
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem3"
"text": "text"
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem2"
"text": "text"
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem1"
"text": "text"
} )
} )
add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
name: "menu2"
"text": "text"
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem18"
"text": "text"
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem17"
"text": "text"
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem16"
"text": "text"
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem15"
"text": "text"
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem14"
"text": "text"
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem13"
"text": "text"
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem12"
"text": "text"
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem11"
"text": "text"
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem10"
"text": "text"
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem9"
"text": "text"
} )
} )
add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
name: "menu3"
"text": "text"
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem25"
"text": "text"
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem26"
"text": "text"
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem24"
"text": "text"
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem23"
"text": "text"
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem22"
"text": "text"
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem21"
"text": "text"
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem20"
"text": "text"
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "menuItem19"
"text": "text"
} )
} )
}, new FormLayoutConstraints( class java.lang.String ) {
"value": "North"
} )
}, new FormLayoutConstraints( class java.lang.String ) {
"value": "Center"
} )
}, new FormLayoutConstraints( null ) {
"location": new java.awt.Point( 0, 0 )
"size": new java.awt.Dimension( 330, 210 )
} )
add( new FormContainer( "javax.swing.JPopupMenu", new FormLayoutManager( class javax.swing.JPopupMenu ) ) {
name: "popupMenu1"
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "cutMenuItem"
"text": "Cut"
"mnemonic": 67
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "copyMenuItem"
"text": "Copy"
"mnemonic": 79
} )
add( new FormComponent( "javax.swing.JMenuItem" ) {
name: "pasteMenuItem"
"text": "Paste"
"mnemonic": 80
} )
}, new FormLayoutConstraints( null ) {
"location": new java.awt.Point( 0, 220 )
"size": new java.awt.Dimension( 91, 87 )
} )
}
}

View File

@@ -93,7 +93,7 @@ class OptionPanePanel
//======== panel9 ========
{
panel9.setLayout(new MigLayout(
"flowy,hidemode 3",
"flowy,insets dialog,hidemode 3",
// columns
"[]" +
"[]" +

View File

@@ -1,4 +1,4 @@
JFDML JFormDesigner: "7.0.1.0.272" Java: "13.0.2" encoding: "UTF-8"
JFDML JFormDesigner: "7.0.2.0.298" Java: "14" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
@@ -12,7 +12,7 @@ new FormModel {
name: "scrollPane1"
"border": new javax.swing.border.EmptyBorder( 0, 0, 0, 0 )
add( new FormContainer( "com.formdev.flatlaf.demo.ScrollablePanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$layoutConstraints": "flowy,hidemode 3"
"$layoutConstraints": "flowy,insets dialog,hidemode 3"
"$columnConstraints": "[][][fill]"
"$rowConstraints": "[top][top][top][top][top][top][top][top]"
} ) {

View File

@@ -1,10 +1,23 @@
/*
* Created by JFormDesigner on Tue Aug 27 21:47:02 CEST 2019
* Copyright 2020 FormDev Software GmbH
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.formdev.flatlaf.demo;
import static com.formdev.flatlaf.FlatClientProperties.TABBED_PANE_HAS_FULL_BORDER;
import static com.formdev.flatlaf.FlatClientProperties.TABBED_PANE_SHOW_CONTENT_SEPARATOR;
import static com.formdev.flatlaf.FlatClientProperties.TABBED_PANE_SHOW_TAB_SEPARATORS;
import java.awt.*;
import javax.swing.*;
@@ -20,6 +33,8 @@ class TabsPanel
{
TabsPanel() {
initComponents();
addInitialTabs( tabbedPane1, tabbedPane2, tabbedPane3, tabbedPane4 );
}
private void tabScrollChanged() {
@@ -28,22 +43,40 @@ class TabsPanel
tabbedPane2.setTabLayoutPolicy( tabLayoutPolicy );
tabbedPane3.setTabLayoutPolicy( tabLayoutPolicy );
tabbedPane4.setTabLayoutPolicy( tabLayoutPolicy );
if( !autoMoreTabs && tabScrollCheckBox.isSelected() && !moreTabsCheckBox.isSelected() ) {
moreTabsCheckBox.setSelected( true );
moreTabsChanged();
autoMoreTabs = true;
} else if( autoMoreTabs && !tabScrollCheckBox.isSelected() && moreTabsCheckBox.isSelected() ) {
moreTabsCheckBox.setSelected( false );
moreTabsChanged();
autoMoreTabs = false;
}
}
private boolean autoMoreTabs;
private void showTabSeparatorsChanged() {
Boolean showTabSeparators = showTabSeparatorsCheckBox.isSelected() ? true : null;
tabbedPane1.putClientProperty( TABBED_PANE_SHOW_TAB_SEPARATORS, showTabSeparators );
tabbedPane2.putClientProperty( TABBED_PANE_SHOW_TAB_SEPARATORS, showTabSeparators );
tabbedPane3.putClientProperty( TABBED_PANE_SHOW_TAB_SEPARATORS, showTabSeparators );
tabbedPane4.putClientProperty( TABBED_PANE_SHOW_TAB_SEPARATORS, showTabSeparators );
putTabbedPanesClientProperty( TABBED_PANE_SHOW_TAB_SEPARATORS, showTabSeparators );
}
private void hideContentSeparatorChanged() {
Boolean showContentSeparator = hideContentSeparatorCheckBox.isSelected() ? false : null;
putTabbedPanesClientProperty( TABBED_PANE_SHOW_CONTENT_SEPARATOR, showContentSeparator );
}
private void hasFullBorderChanged() {
Boolean hasFullBorder = hasFullBorderCheckBox.isSelected() ? true : null;
tabbedPane1.putClientProperty( TABBED_PANE_HAS_FULL_BORDER, hasFullBorder );
tabbedPane2.putClientProperty( TABBED_PANE_HAS_FULL_BORDER, hasFullBorder );
tabbedPane3.putClientProperty( TABBED_PANE_HAS_FULL_BORDER, hasFullBorder );
tabbedPane4.putClientProperty( TABBED_PANE_HAS_FULL_BORDER, hasFullBorder );
putTabbedPanesClientProperty( TABBED_PANE_HAS_FULL_BORDER, hasFullBorder );
}
private void putTabbedPanesClientProperty( String key, Object value ) {
tabbedPane1.putClientProperty( key, value );
tabbedPane2.putClientProperty( key, value );
tabbedPane3.putClientProperty( key, value );
tabbedPane4.putClientProperty( key, value );
}
private void moreTabsChanged() {
@@ -52,15 +85,17 @@ class TabsPanel
addRemoveMoreTabs( tabbedPane2, moreTabs );
addRemoveMoreTabs( tabbedPane3, moreTabs );
addRemoveMoreTabs( tabbedPane4, moreTabs );
autoMoreTabs = false;
}
private void addRemoveMoreTabs( JTabbedPane tabbedPane, boolean add ) {
if( add ) {
tabbedPane.addTab( "Tab 4", new JLabel( "tab 4" ) );
tabbedPane.addTab( "Tab 5", new JLabel( "tab 5" ) );
tabbedPane.addTab( "Tab 6", new JLabel( "tab 6" ) );
tabbedPane.addTab( "Tab 7", new JLabel( "tab 7" ) );
tabbedPane.addTab( "Tab 8", new JLabel( "tab 8" ) );
addTab( tabbedPane, "Tab 4", "tab content 4" );
addTab( tabbedPane, "Tab 5", "tab content 5" );
addTab( tabbedPane, "Tab 6", "tab content 6" );
addTab( tabbedPane, "Tab 7", "tab content 7" );
addTab( tabbedPane, "Tab 8", "tab content 8" );
} else {
int tabCount = tabbedPane.getTabCount();
if( tabCount > 3 ) {
@@ -70,6 +105,39 @@ class TabsPanel
}
}
private void addInitialTabs( JTabbedPane... tabbedPanes ) {
for( JTabbedPane tabbedPane : tabbedPanes ) {
String placement = "unknown";
switch( tabbedPane.getTabPlacement() ) {
case JTabbedPane.TOP: placement = "TOP"; break;
case JTabbedPane.BOTTOM: placement = "BOTTOM"; break;
case JTabbedPane.LEFT: placement = "LEFT"; break;
case JTabbedPane.RIGHT: placement = "RIGHT"; break;
}
addTab( tabbedPane, "Tab 1", "<html><center>" + placement + "<br>tab placement</center></html>" );
JComponent tab2 = createTab( "tab content 2" );
tab2.setBorder( new LineBorder( Color.magenta ) );
tabbedPane.addTab( "Second Tab", tab2 );
addTab( tabbedPane, "Disabled", "tab content 3" );
tabbedPane.setEnabledAt( 2, false );
}
}
private void addTab( JTabbedPane tabbedPane, String title, String text ) {
tabbedPane.addTab( title, createTab( text ) );
}
private JComponent createTab( String text ) {
JLabel label = new JLabel( text );
label.setHorizontalAlignment( SwingConstants.CENTER );
JPanel tab = new JPanel( new BorderLayout() );
tab.add( label, BorderLayout.CENTER );
return tab;
}
private void initComponents() {
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
JPanel panel9 = new JPanel();
@@ -77,41 +145,30 @@ class TabsPanel
JSplitPane splitPane3 = new JSplitPane();
JSplitPane splitPane1 = new JSplitPane();
JPanel panel10 = new JPanel();
JLabel label1 = new JLabel();
JPanel panel11 = new JPanel();
JLabel label2 = new JLabel();
JSplitPane splitPane2 = new JSplitPane();
JPanel panel12 = new JPanel();
JLabel label3 = new JLabel();
JPanel panel13 = new JPanel();
JLabel label4 = new JLabel();
JLabel tabbedPaneLabel = new JLabel();
tabbedPane1 = new JTabbedPane();
JPanel panel1 = new JPanel();
JLabel label1 = new JLabel();
JPanel panel2 = new JPanel();
JLabel label2 = new JLabel();
tabbedPane3 = new JTabbedPane();
JPanel panel5 = new JPanel();
JLabel label5 = new JLabel();
JPanel panel6 = new JPanel();
JLabel label6 = new JLabel();
tabbedPane2 = new JTabbedPane();
JPanel panel3 = new JPanel();
JLabel label3 = new JLabel();
JPanel panel4 = new JPanel();
JLabel label4 = new JLabel();
tabbedPane4 = new JTabbedPane();
JPanel panel7 = new JPanel();
JLabel label7 = new JLabel();
JPanel panel8 = new JPanel();
JLabel label8 = new JLabel();
JPanel panel14 = new JPanel();
moreTabsCheckBox = new JCheckBox();
tabScrollCheckBox = new JCheckBox();
showTabSeparatorsCheckBox = new JCheckBox();
hideContentSeparatorCheckBox = new JCheckBox();
hasFullBorderCheckBox = new JCheckBox();
CellConstraints cc = new CellConstraints();
//======== this ========
setLayout(new MigLayout(
"hidemode 3",
"insets dialog,hidemode 3",
// columns
"[grow,fill]",
// rows
@@ -120,8 +177,8 @@ class TabsPanel
//======== panel9 ========
{
panel9.setLayout(new FormLayout(
"70dlu:grow, $lcgap, 70dlu:grow",
"default, $lgap, fill:70dlu, $lgap, pref, 2*($lgap, fill:70dlu:grow), $lgap, pref"));
"70dlu:grow, $ugap, 70dlu:grow",
"default, $lgap, fill:70dlu, $pgap, pref, $lgap, 2*(fill:80dlu:grow, $ugap), pref"));
//---- splitPaneLabel ----
splitPaneLabel.setText("JSplitPane:");
@@ -134,19 +191,30 @@ class TabsPanel
//======== splitPane1 ========
{
splitPane1.setResizeWeight(0.5);
splitPane1.setOneTouchExpandable(true);
//======== panel10 ========
{
panel10.setBackground(Color.orange);
panel10.setLayout(new FlowLayout());
panel10.setBackground(new Color(217, 163, 67));
panel10.setLayout(new BorderLayout());
//---- label1 ----
label1.setText("LEFT");
label1.setHorizontalAlignment(SwingConstants.CENTER);
label1.setForeground(Color.white);
panel10.add(label1, BorderLayout.CENTER);
}
splitPane1.setLeftComponent(panel10);
//======== panel11 ========
{
panel11.setBackground(Color.magenta);
panel11.setLayout(new FlowLayout());
panel11.setBackground(new Color(98, 181, 67));
panel11.setLayout(new BorderLayout());
//---- label2 ----
label2.setText("RIGHT");
label2.setHorizontalAlignment(SwingConstants.CENTER);
label2.setForeground(Color.white);
panel11.add(label2, BorderLayout.CENTER);
}
splitPane1.setRightComponent(panel11);
}
@@ -156,19 +224,30 @@ class TabsPanel
{
splitPane2.setOrientation(JSplitPane.VERTICAL_SPLIT);
splitPane2.setResizeWeight(0.5);
splitPane2.setOneTouchExpandable(true);
//======== panel12 ========
{
panel12.setBackground(Color.orange);
panel12.setLayout(new FlowLayout());
panel12.setBackground(new Color(242, 101, 34));
panel12.setLayout(new BorderLayout());
//---- label3 ----
label3.setText("TOP");
label3.setHorizontalAlignment(SwingConstants.CENTER);
label3.setForeground(Color.white);
panel12.add(label3, BorderLayout.CENTER);
}
splitPane2.setTopComponent(panel12);
//======== panel13 ========
{
panel13.setBackground(Color.magenta);
panel13.setLayout(new FlowLayout());
panel13.setBackground(new Color(64, 182, 224));
panel13.setLayout(new BorderLayout());
//---- label4 ----
label4.setText("BOTTOM");
label4.setHorizontalAlignment(SwingConstants.CENTER);
label4.setForeground(Color.white);
panel13.add(label4, BorderLayout.CENTER);
}
splitPane2.setBottomComponent(panel13);
}
@@ -179,112 +258,23 @@ class TabsPanel
//---- tabbedPaneLabel ----
tabbedPaneLabel.setText("JTabbedPane:");
panel9.add(tabbedPaneLabel, cc.xy(1, 5));
//======== tabbedPane1 ========
{
//======== panel1 ========
{
panel1.setLayout(new FlowLayout());
//---- label1 ----
label1.setText("TOP");
panel1.add(label1);
}
tabbedPane1.addTab("Tab 1", panel1);
//======== panel2 ========
{
panel2.setBorder(new LineBorder(Color.magenta));
panel2.setLayout(new FlowLayout());
}
tabbedPane1.addTab("Tab 2", panel2);
//---- label2 ----
label2.setText("text");
tabbedPane1.addTab("Tab 3", label2);
}
panel9.add(tabbedPane1, cc.xy(1, 7));
//======== tabbedPane3 ========
{
tabbedPane3.setTabPlacement(SwingConstants.LEFT);
//======== panel5 ========
{
panel5.setLayout(new FlowLayout());
//---- label5 ----
label5.setText("LEFT");
panel5.add(label5);
}
tabbedPane3.addTab("Tab 1", panel5);
//======== panel6 ========
{
panel6.setBorder(new LineBorder(Color.magenta));
panel6.setLayout(new FlowLayout());
}
tabbedPane3.addTab("Tab 2", panel6);
//---- label6 ----
label6.setText("text");
tabbedPane3.addTab("Tab 3", label6);
}
panel9.add(tabbedPane3, cc.xy(3, 7));
//======== tabbedPane2 ========
{
tabbedPane2.setTabPlacement(SwingConstants.BOTTOM);
//======== panel3 ========
{
panel3.setLayout(new FlowLayout());
//---- label3 ----
label3.setText("BOTTOM");
panel3.add(label3);
}
tabbedPane2.addTab("Tab 1", panel3);
//======== panel4 ========
{
panel4.setBorder(new LineBorder(Color.magenta));
panel4.setLayout(new FlowLayout());
}
tabbedPane2.addTab("Tab 2", panel4);
tabbedPane2.setEnabledAt(1, false);
//---- label4 ----
label4.setText("text");
tabbedPane2.addTab("Tab 3", label4);
}
panel9.add(tabbedPane2, cc.xy(1, 9));
//======== tabbedPane4 ========
{
tabbedPane4.setTabPlacement(SwingConstants.RIGHT);
//======== panel7 ========
{
panel7.setLayout(new FlowLayout());
//---- label7 ----
label7.setText("RIGHT");
panel7.add(label7);
}
tabbedPane4.addTab("Tab 1", panel7);
//======== panel8 ========
{
panel8.setBorder(new LineBorder(Color.magenta));
panel8.setLayout(new FlowLayout());
}
tabbedPane4.addTab("Tab 2", panel8);
//---- label8 ----
label8.setText("text");
tabbedPane4.addTab("Tab 3", label8);
}
panel9.add(tabbedPane4, cc.xy(3, 9));
@@ -296,32 +286,37 @@ class TabsPanel
"[]" +
"[]" +
"[]" +
"[fill]" +
"[]",
// rows
"[center]"));
//---- moreTabsCheckBox ----
moreTabsCheckBox.setText("more tabs");
moreTabsCheckBox.setText("More tabs");
moreTabsCheckBox.setMnemonic('M');
moreTabsCheckBox.addActionListener(e -> moreTabsChanged());
panel14.add(moreTabsCheckBox, "cell 0 0");
//---- tabScrollCheckBox ----
tabScrollCheckBox.setText("tabLayoutPolicy = SCROLL");
tabScrollCheckBox.setText("Use scroll layout");
tabScrollCheckBox.setMnemonic('S');
tabScrollCheckBox.addActionListener(e -> tabScrollChanged());
panel14.add(tabScrollCheckBox, "cell 1 0,alignx left,growx 0");
//---- showTabSeparatorsCheckBox ----
showTabSeparatorsCheckBox.setText("JTabbedPane.showTabSeparators");
showTabSeparatorsCheckBox.setText("Show tab separators");
showTabSeparatorsCheckBox.addActionListener(e -> showTabSeparatorsChanged());
panel14.add(showTabSeparatorsCheckBox, "cell 2 0");
//---- hideContentSeparatorCheckBox ----
hideContentSeparatorCheckBox.setText("Hide content separator");
hideContentSeparatorCheckBox.addActionListener(e -> hideContentSeparatorChanged());
panel14.add(hideContentSeparatorCheckBox, "cell 3 0");
//---- hasFullBorderCheckBox ----
hasFullBorderCheckBox.setText("JTabbedPane.hasFullBorder");
hasFullBorderCheckBox.setMnemonic('F');
hasFullBorderCheckBox.setText("Show content border");
hasFullBorderCheckBox.addActionListener(e -> hasFullBorderChanged());
panel14.add(hasFullBorderCheckBox, "cell 3 0,alignx left,growx 0");
panel14.add(hasFullBorderCheckBox, "cell 4 0,alignx left,growx 0");
}
panel9.add(panel14, cc.xywh(1, 11, 3, 1));
}
@@ -337,6 +332,7 @@ class TabsPanel
private JCheckBox moreTabsCheckBox;
private JCheckBox tabScrollCheckBox;
private JCheckBox showTabSeparatorsCheckBox;
private JCheckBox hideContentSeparatorCheckBox;
private JCheckBox hasFullBorderCheckBox;
// JFormDesigner - End of variables declaration //GEN-END:variables
}

View File

@@ -1,4 +1,4 @@
JFDML JFormDesigner: "7.0.0.0.194" Java: "11.0.2" encoding: "UTF-8"
JFDML JFormDesigner: "7.0.2.0.298" Java: "15" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
@@ -7,14 +7,14 @@ new FormModel {
"JavaCodeGenerator.defaultVariableLocal": true
}
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$layoutConstraints": "hidemode 3"
"$layoutConstraints": "insets dialog,hidemode 3"
"$columnConstraints": "[grow,fill]"
"$rowConstraints": "[grow,fill]"
} ) {
name: "this"
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class com.jgoodies.forms.layout.FormLayout ) {
"$columnSpecs": "70dlu:grow, labelcompgap, 70dlu:grow"
"$rowSpecs": "default, linegap, fill:70dlu, linegap, pref, linegap, fill:70dlu:grow, linegap, fill:70dlu:grow, linegap, pref"
"$columnSpecs": "70dlu:grow, unrelgap, 70dlu:grow"
"$rowSpecs": "default, linegap, fill:70dlu, pargap, pref, linegap, fill:80dlu:grow, unrelgap, fill:80dlu:grow, unrelgap, pref"
} ) {
name: "panel9"
add( new FormComponent( "javax.swing.JLabel" ) {
@@ -27,16 +27,31 @@ new FormModel {
add( new FormContainer( "javax.swing.JSplitPane", new FormLayoutManager( class javax.swing.JSplitPane ) ) {
name: "splitPane1"
"resizeWeight": 0.5
"oneTouchExpandable": true
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.FlowLayout ) ) {
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.BorderLayout ) ) {
name: "panel10"
"background": sfield java.awt.Color orange
"background": new java.awt.Color( 217, 163, 67, 255 )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label1"
"text": "LEFT"
"horizontalAlignment": 0
"foreground": sfield java.awt.Color white
}, new FormLayoutConstraints( class java.lang.String ) {
"value": "Center"
} )
}, new FormLayoutConstraints( class java.lang.String ) {
"value": "left"
} )
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.FlowLayout ) ) {
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.BorderLayout ) ) {
name: "panel11"
"background": sfield java.awt.Color magenta
"background": new java.awt.Color( 98, 181, 67, 255 )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label2"
"text": "RIGHT"
"horizontalAlignment": 0
"foreground": sfield java.awt.Color white
}, new FormLayoutConstraints( class java.lang.String ) {
"value": "Center"
} )
}, new FormLayoutConstraints( class java.lang.String ) {
"value": "right"
} )
@@ -47,16 +62,31 @@ new FormModel {
name: "splitPane2"
"orientation": 0
"resizeWeight": 0.5
"oneTouchExpandable": true
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.FlowLayout ) ) {
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.BorderLayout ) ) {
name: "panel12"
"background": sfield java.awt.Color orange
"background": new java.awt.Color( 242, 101, 34, 255 )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label3"
"text": "TOP"
"horizontalAlignment": 0
"foreground": sfield java.awt.Color white
}, new FormLayoutConstraints( class java.lang.String ) {
"value": "Center"
} )
}, new FormLayoutConstraints( class java.lang.String ) {
"value": "left"
} )
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.FlowLayout ) ) {
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.BorderLayout ) ) {
name: "panel13"
"background": sfield java.awt.Color magenta
"background": new java.awt.Color( 64, 182, 224, 255 )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label4"
"text": "BOTTOM"
"horizontalAlignment": 0
"foreground": sfield java.awt.Color white
}, new FormLayoutConstraints( class java.lang.String ) {
"value": "Center"
} )
}, new FormLayoutConstraints( class java.lang.String ) {
"value": "right"
} )
@@ -79,27 +109,6 @@ new FormModel {
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.FlowLayout ) ) {
name: "panel1"
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label1"
"text": "TOP"
} )
}, new FormLayoutConstraints( null ) {
"title": "Tab 1"
} )
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.FlowLayout ) ) {
name: "panel2"
"border": &LineBorder0 new javax.swing.border.LineBorder( sfield java.awt.Color magenta, 1, false )
}, new FormLayoutConstraints( null ) {
"title": "Tab 2"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label2"
"text": "text"
}, new FormLayoutConstraints( null ) {
"title": "Tab 3"
} )
}, new FormLayoutConstraints( class com.jgoodies.forms.layout.CellConstraints ) {
"gridX": 1
"gridY": 7
@@ -110,27 +119,6 @@ new FormModel {
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.FlowLayout ) ) {
name: "panel5"
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label5"
"text": "LEFT"
} )
}, new FormLayoutConstraints( null ) {
"title": "Tab 1"
} )
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.FlowLayout ) ) {
name: "panel6"
"border": #LineBorder0
}, new FormLayoutConstraints( null ) {
"title": "Tab 2"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label6"
"text": "text"
}, new FormLayoutConstraints( null ) {
"title": "Tab 3"
} )
}, new FormLayoutConstraints( class com.jgoodies.forms.layout.CellConstraints ) {
"gridX": 3
"gridY": 7
@@ -141,28 +129,6 @@ new FormModel {
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.FlowLayout ) ) {
name: "panel3"
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label3"
"text": "BOTTOM"
} )
}, new FormLayoutConstraints( null ) {
"title": "Tab 1"
} )
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.FlowLayout ) ) {
name: "panel4"
"border": #LineBorder0
}, new FormLayoutConstraints( null ) {
"title": "Tab 2"
"enabled": false
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label4"
"text": "text"
}, new FormLayoutConstraints( null ) {
"title": "Tab 3"
} )
}, new FormLayoutConstraints( class com.jgoodies.forms.layout.CellConstraints ) {
"gridY": 9
} )
@@ -172,40 +138,19 @@ new FormModel {
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.FlowLayout ) ) {
name: "panel7"
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label7"
"text": "RIGHT"
} )
}, new FormLayoutConstraints( null ) {
"title": "Tab 1"
} )
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.FlowLayout ) ) {
name: "panel8"
"border": #LineBorder0
}, new FormLayoutConstraints( null ) {
"title": "Tab 2"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label8"
"text": "text"
}, new FormLayoutConstraints( null ) {
"title": "Tab 3"
} )
}, new FormLayoutConstraints( class com.jgoodies.forms.layout.CellConstraints ) {
"gridX": 3
"gridY": 9
} )
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$layoutConstraints": "insets 0,hidemode 3"
"$columnConstraints": "[][][][]"
"$columnConstraints": "[][][][fill][]"
"$rowConstraints": "[center]"
} ) {
name: "panel14"
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "moreTabsCheckBox"
"text": "more tabs"
"text": "More tabs"
"mnemonic": 77
auxiliary() {
"JavaCodeGenerator.variableLocal": false
@@ -216,7 +161,7 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "tabScrollCheckBox"
"text": "tabLayoutPolicy = SCROLL"
"text": "Use scroll layout"
"mnemonic": 83
auxiliary() {
"JavaCodeGenerator.variableLocal": false
@@ -227,7 +172,7 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "showTabSeparatorsCheckBox"
"text": "JTabbedPane.showTabSeparators"
"text": "Show tab separators"
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
@@ -235,16 +180,25 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 0"
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "hideContentSeparatorCheckBox"
"text": "Hide content separator"
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "hideContentSeparatorChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 0"
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "hasFullBorderCheckBox"
"text": "JTabbedPane.hasFullBorder"
"mnemonic": 70
"text": "Show content border"
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "hasFullBorderChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 0,alignx left,growx 0"
"value": "cell 4 0,alignx left,growx 0"
} )
}, new FormLayoutConstraints( class com.jgoodies.forms.layout.CellConstraints ) {
"gridY": 11
@@ -255,7 +209,7 @@ new FormModel {
} )
}, new FormLayoutConstraints( null ) {
"location": new java.awt.Point( 0, 0 )
"size": new java.awt.Dimension( 610, 515 )
"size": new java.awt.Dimension( 700, 515 )
} )
}
}

View File

@@ -71,7 +71,7 @@ public class ExtrasPanel
//======== this ========
setLayout(new MigLayout(
"hidemode 3",
"insets dialog,hidemode 3",
// columns
"[]" +
"[]" +
@@ -98,7 +98,7 @@ public class ExtrasPanel
//---- triStateLabel1 ----
triStateLabel1.setText("text");
triStateLabel1.setEnabled(false);
add(triStateLabel1, "cell 2 1");
add(triStateLabel1, "cell 2 1,gapx 30");
//---- label2 ----
label2.setText("SVG Icons:");

View File

@@ -4,7 +4,7 @@ new FormModel {
contentType: "form/swing"
root: new FormRoot {
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$layoutConstraints": "hidemode 3"
"$layoutConstraints": "insets dialog,hidemode 3"
"$columnConstraints": "[][][left]"
"$rowConstraints": "[]para[][][]"
} ) {
@@ -33,7 +33,7 @@ new FormModel {
"text": "text"
"enabled": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 1"
"value": "cell 2 1,gapx 30"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label2"

View File

@@ -205,11 +205,11 @@ public class IJThemesPanel
break;
}
}
}
// select first theme if none selected
if( themesList.getSelectedIndex() < 0 )
themesList.setSelectedIndex( 0 );
// select first theme if none selected
if( themesList.getSelectedIndex() < 0 )
themesList.setSelectedIndex( 0 );
}
// scroll selection into visible area
int sel = themesList.getSelectedIndex();

View File

@@ -0,0 +1,17 @@
#
# Copyright 2020 FormDev Software GmbH
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
HintPanel.backgroundColor=darken(#ffffe1,80%)

View File

@@ -0,0 +1,17 @@
#
# Copyright 2020 FormDev Software GmbH
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
HintPanel.backgroundColor=#ffffe1

View File

@@ -3,16 +3,20 @@ FlatLaf Extras
This sub-project provides some additional components and classes:
- [FlatAnimatedLafChange](src/main/java/com/formdev/flatlaf/extras/FlatAnimatedLafChange.java):
Animated Laf changing.
- [FlatInspector](src/main/java/com/formdev/flatlaf/extras/FlatInspector.java):
A simple UI inspector that shows information about UI component at mouse
location in a tooltip.
- [FlatSVGIcon](src/main/java/com/formdev/flatlaf/extras/FlatSVGIcon.java): An
icon that displays SVG using
[svgSalamander](https://github.com/JFormDesigner/svgSalamander).
- [TriStateCheckBox](src/main/java/com/formdev/flatlaf/extras/TriStateCheckBox.java):
A tri-state check box.
- [FlatSVGIcon](https://www.javadoc.io/doc/com.formdev/flatlaf-extras/latest/com/formdev/flatlaf/extras/FlatSVGIcon.html):
An icon that displays SVG using
[svgSalamander](https://github.com/JFormDesigner/svgSalamander).\
![FlatSVGIcon.png](../images/extras-FlatSVGIcon.png)
- [TriStateCheckBox](https://www.javadoc.io/doc/com.formdev/flatlaf-extras/latest/com/formdev/flatlaf/extras/TriStateCheckBox.html):
A tri-state check box.\
![TriStateCheckBox.png](../images/extras-TriStateCheckBox.png)
- [FlatAnimatedLafChange](https://www.javadoc.io/doc/com.formdev/flatlaf-extras/latest/com/formdev/flatlaf/extras/FlatAnimatedLafChange.html):
Animated Laf (theme) changing.
- [FlatInspector](#ui-inspector): A simple UI inspector that shows information
about UI component at mouse location in a tooltip.
- [FlatUIDefaultsInspector](#ui-defaults-inspector): A simple UI defaults
inspector that shows a window with all UI defaults used in current theme (look
and feel).
Download
@@ -36,3 +40,45 @@ you can download here:
[![Download](https://api.bintray.com/packages/jformdesigner/flatlaf/flatlaf/images/download.svg)](https://bintray.com/jformdesigner/flatlaf/flatlaf/_latestVersion)
[![Download](https://api.bintray.com/packages/jformdesigner/svgSalamander/svgSalamander/images/download.svg)](https://bintray.com/jformdesigner/svgSalamander/svgSalamander/_latestVersion)
Tools
-----
### UI Inspector
A simple UI inspector that shows information about UI component at mouse
location in a tooltip, which may be useful while developing an application.
Should be not installed in released applications.
Once installed with following code (e.g. in method `main`), it can be activated
for the active window with the given keystroke:
~~~java
FlatInspector.install( "ctrl shift alt X" );
~~~
![UI inspector](../images/extras-FlatInspector.png)
When the UI inspector is active some additional keys are available:
- press <kbd>Esc</kbd> key to disable UI inspector
- press <kbd>Ctrl</kbd> key to increase inspection level, which shows
information about parent of UI component at mouse location
- press <kbd>Shift</kbd> key to decrease inspection level
### UI Defaults Inspector
A simple UI defaults inspector that shows a window with all UI defaults used in
current theme (look and feel), which may be useful while developing an
application. Should be not installed in released applications.
Once installed with following code (e.g. in method `main`), it can be activated
with the given keystroke:
~~~java
FlatUIDefaultsInspector.install( "ctrl shift alt Y" );
~~~
![UI Defaults Inspector](../images/extras-FlatUIDefaultsInspector.png)

View File

@@ -22,7 +22,7 @@ plugins {
dependencies {
implementation( project( ":flatlaf-core" ) )
implementation( "com.formdev:svgSalamander:1.1.2.1" )
implementation( "com.formdev:svgSalamander:1.1.2.3" )
}
flatlafModuleInfo {

View File

@@ -19,10 +19,10 @@ package com.formdev.flatlaf.extras;
import java.awt.AlphaComposite;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Window;
import java.util.HashMap;
import java.awt.image.VolatileImage;
import java.util.Map;
import java.util.WeakHashMap;
import javax.swing.JComponent;
import javax.swing.JLayeredPane;
import javax.swing.RootPaneContainer;
@@ -56,8 +56,10 @@ public class FlatAnimatedLafChange
public static int resolution = 40;
private static Animator animator;
private static final Map<JLayeredPane, JComponent> map = new HashMap<>();
private static final Map<JLayeredPane, JComponent> oldUIsnapshots = new WeakHashMap<>();
private static final Map<JLayeredPane, JComponent> newUIsnapshots = new WeakHashMap<>();
private static float alpha;
private static boolean inShowSnapshot;
/**
* Create a snapshot of the old UI and shows it on top of the UI.
@@ -73,16 +75,27 @@ public class FlatAnimatedLafChange
alpha = 1;
// show snapshot of old UI
showSnapshot( true, oldUIsnapshots );
}
private static void showSnapshot( boolean useAlpha, Map<JLayeredPane, JComponent> map ) {
inShowSnapshot = true;
// create snapshots for all shown windows
Window[] windows = Window.getWindows();
for( Window window : windows ) {
if( !(window instanceof RootPaneContainer) || !window.isShowing() )
continue;
JLayeredPane layeredPane = ((RootPaneContainer)window).getLayeredPane();
// create snapshot image
// (using volatile image to have correct sub-pixel text rendering on Java 9+)
VolatileImage snapshot = window.createVolatileImage( window.getWidth(), window.getHeight() );
if( snapshot == null )
continue;
// create snapshot image of layered pane
Image snapshot = window.createImage( window.getWidth(), window.getHeight() );
// paint window to snapshot image
JLayeredPane layeredPane = ((RootPaneContainer)window).getLayeredPane();
layeredPane.paint( snapshot.getGraphics() );
// create snapshot layer, which is added to layered pane and paints
@@ -90,16 +103,32 @@ public class FlatAnimatedLafChange
JComponent snapshotLayer = new JComponent() {
@Override
public void paint( Graphics g ) {
((Graphics2D)g).setComposite( AlphaComposite.getInstance( AlphaComposite.SRC_OVER, alpha ) );
if( inShowSnapshot || snapshot.contentsLost() )
return;
if( useAlpha )
((Graphics2D)g).setComposite( AlphaComposite.getInstance( AlphaComposite.SRC_OVER, alpha ) );
g.drawImage( snapshot, 0, 0, null );
}
@Override
public void removeNotify() {
super.removeNotify();
// release system resources used by volatile image
snapshot.flush();
}
};
if( !useAlpha )
snapshotLayer.setOpaque( true );
snapshotLayer.setSize( layeredPane.getSize() );
// add image layer to layered pane
layeredPane.add( snapshotLayer, JLayeredPane.DRAG_LAYER );
layeredPane.add( snapshotLayer, Integer.valueOf( JLayeredPane.DRAG_LAYER + (useAlpha ? 2 : 1) ) );
map.put( layeredPane, snapshotLayer );
}
inShowSnapshot = false;
}
/**
@@ -111,9 +140,12 @@ public class FlatAnimatedLafChange
if( !FlatSystemProperties.getBoolean( "flatlaf.animatedLafChange", true ) )
return;
if( map.isEmpty() )
if( oldUIsnapshots.isEmpty() )
return;
// show snapshot of new UI
showSnapshot( false, newUIsnapshots );
// create animator
animator = new Animator( duration, fraction -> {
if( fraction < 0.1 || fraction > 0.9 )
@@ -122,7 +154,7 @@ public class FlatAnimatedLafChange
alpha = 1f - fraction;
// repaint snapshots
for( Map.Entry<JLayeredPane, JComponent> e : map.entrySet() ) {
for( Map.Entry<JLayeredPane, JComponent> e : oldUIsnapshots.entrySet() ) {
if( e.getKey().isShowing() )
e.getValue().repaint();
}
@@ -136,6 +168,11 @@ public class FlatAnimatedLafChange
}
private static void hideSnapshot() {
hideSnapshot( oldUIsnapshots );
hideSnapshot( newUIsnapshots );
}
private static void hideSnapshot( Map<JLayeredPane, JComponent> map ) {
// remove snapshots
for( Map.Entry<JLayeredPane, JComponent> e : map.entrySet() ) {
e.getKey().remove( e.getValue() );

View File

@@ -158,10 +158,20 @@ public class FlatInspector
} else if( id == KeyEvent.KEY_RELEASED && wasCtrlOrShiftKeyPressed ) {
if( keyCode == KeyEvent.VK_CONTROL ) {
inspectParentLevel++;
inspect( lastX, lastY );
int parentLevel = inspect( lastX, lastY );
// limit level
if( inspectParentLevel > parentLevel )
inspectParentLevel = parentLevel;
} else if( keyCode == KeyEvent.VK_SHIFT && inspectParentLevel > 0 ) {
inspectParentLevel--;
inspect( lastX, lastY );
int parentLevel = inspect( lastX, lastY );
// decrease level
if( inspectParentLevel > parentLevel ) {
inspectParentLevel = Math.max( parentLevel - 1, 0 );
inspect( lastX, lastY );
}
}
}
@@ -248,24 +258,28 @@ public class FlatInspector
} );
}
private void inspect( int x, int y ) {
private int inspect( int x, int y ) {
Point pt = SwingUtilities.convertPoint( rootPane.getGlassPane(), x, y, rootPane );
Component c = getDeepestComponentAt( rootPane, pt.x, pt.y );
int parentLevel = 0;
for( int i = 0; i < inspectParentLevel && c != null; i++ ) {
Container parent = c.getParent();
if( parent == null )
break;
c = parent;
parentLevel++;
}
if( c == lastComponent )
return;
return parentLevel;
lastComponent = c;
highlight( c );
showToolTip( c, x, y );
showToolTip( c, x, y, parentLevel );
return parentLevel;
}
private Component getDeepestComponentAt( Component parent, int x, int y ) {
@@ -338,7 +352,7 @@ public class FlatInspector
return c;
}
private void showToolTip( Component c, int x, int y ) {
private void showToolTip( Component c, int x, int y, int parentLevel ) {
if( c == null ) {
if( tip != null )
tip.setVisible( false );
@@ -356,7 +370,7 @@ public class FlatInspector
} else
tip.setVisible( true );
tip.setTipText( buildToolTipText( c ) );
tip.setTipText( buildToolTipText( c, parentLevel ) );
int tx = x + UIScale.scale( 8 );
int ty = y + UIScale.scale( 16 );
@@ -377,7 +391,7 @@ public class FlatInspector
tip.repaint();
}
private String buildToolTipText( Component c ) {
private static String buildToolTipText( Component c, int parentLevel ) {
String name = c.getClass().getName();
name = name.substring( name.lastIndexOf( '.' ) + 1 );
@@ -441,10 +455,10 @@ public class FlatInspector
text += "Left-to-right: " + c.getComponentOrientation().isLeftToRight() + '\n';
text += "Parent: " + (c.getParent() != null ? c.getParent().getClass().getName() : "null");
if( inspectParentLevel > 0 )
text += "\n\nParent level: " + inspectParentLevel;
if( parentLevel > 0 )
text += "\n\nParent level: " + parentLevel;
if( inspectParentLevel > 0 )
if( parentLevel > 0 )
text += "\n(press Ctrl/Shift to increase/decrease level)";
else
text += "\n\n(press Ctrl key to inspect parent)";

View File

@@ -50,11 +50,18 @@ public class FlatSVGIcon
private static final SVGUniverse svgUniverse = new SVGUniverse();
private final String name;
private final ClassLoader classLoader;
private SVGDiagram diagram;
private boolean dark;
public FlatSVGIcon( String name ) {
this( name, null );
}
public FlatSVGIcon( String name, ClassLoader classLoader ) {
this.name = name;
this.classLoader = classLoader;
}
private void update() {
@@ -79,7 +86,14 @@ public class FlatSVGIcon
int dotIndex = name.lastIndexOf( '.' );
name = name.substring( 0, dotIndex ) + "_dark" + name.substring( dotIndex );
}
return FlatSVGIcon.class.getClassLoader().getResource( name );
ClassLoader cl = (classLoader != null) ? classLoader : FlatSVGIcon.class.getClassLoader();
return cl.getResource( name );
}
public boolean hasFound() {
update();
return diagram != null;
}
@Override

View File

@@ -0,0 +1,912 @@
/*
* Copyright 2020 FormDev Software GmbH
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.formdev.flatlaf.extras;
import java.awt.*;
import java.awt.event.*;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Locale;
import java.util.Map.Entry;
import java.util.Set;
import java.util.function.Predicate;
import java.util.prefs.Preferences;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableColumnModel;
import com.formdev.flatlaf.FlatLaf;
import com.formdev.flatlaf.icons.FlatAbstractIcon;
import com.formdev.flatlaf.ui.FlatBorder;
import com.formdev.flatlaf.ui.FlatEmptyBorder;
import com.formdev.flatlaf.ui.FlatLineBorder;
import com.formdev.flatlaf.ui.FlatMarginBorder;
import com.formdev.flatlaf.ui.FlatUIUtils;
import com.formdev.flatlaf.util.GrayFilter;
import com.formdev.flatlaf.util.HSLColor;
import com.formdev.flatlaf.util.ScaledEmptyBorder;
import com.formdev.flatlaf.util.UIScale;
/**
* A simple UI defaults inspector that shows a window with all UI defaults used
* in current look and feel.
* <p>
* To use it in an application install it with:
* <pre>
* FlatUIDefaultsInspector.install( "ctrl shift alt Y" );
* </pre>
* This can be done e.g. in the main() method and allows enabling (and disabling)
* the UI defaults inspector with the given keystroke.
*
* @author Karl Tauber
*/
public class FlatUIDefaultsInspector
{
private static final int KEY_MODIFIERS_MASK = InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK | InputEvent.ALT_DOWN_MASK | InputEvent.META_DOWN_MASK;
private static FlatUIDefaultsInspector inspector;
private final String title;
private final PropertyChangeListener lafListener = this::lafChanged;
private final PropertyChangeListener lafDefaultsListener = this::lafDefaultsChanged;
private boolean refreshPending;
/**
* Installs a key listener into the application that allows enabling and disabling
* the UI inspector with the given keystroke (e.g. "ctrl shift alt Y").
*/
public static void install( String activationKeys ) {
KeyStroke keyStroke = KeyStroke.getKeyStroke( activationKeys );
Toolkit.getDefaultToolkit().addAWTEventListener( e -> {
if( e.getID() == KeyEvent.KEY_RELEASED &&
((KeyEvent)e).getKeyCode() == keyStroke.getKeyCode() &&
(((KeyEvent)e).getModifiersEx() & KEY_MODIFIERS_MASK) == (keyStroke.getModifiers() & KEY_MODIFIERS_MASK) )
{
show();
}
}, AWTEvent.KEY_EVENT_MASK );
}
public static void show() {
if( inspector != null ) {
inspector.ensureOnScreen();
inspector.frame.toFront();
return;
}
inspector = new FlatUIDefaultsInspector();
inspector.frame.setVisible( true );
}
public static void hide() {
if( inspector != null )
inspector.frame.dispose();
}
private FlatUIDefaultsInspector() {
initComponents();
title = frame.getTitle();
updateWindowTitle();
panel.setBorder( new ScaledEmptyBorder( 10, 10, 10, 10 ) );
filterPanel.setBorder( new ScaledEmptyBorder( 0, 0, 10, 0 ) );
// initialize filter
filterField.getDocument().addDocumentListener( new DocumentListener() {
@Override
public void removeUpdate( DocumentEvent e ) {
filterChanged();
}
@Override
public void insertUpdate( DocumentEvent e ) {
filterChanged();
}
@Override
public void changedUpdate( DocumentEvent e ) {
filterChanged();
}
} );
delegateKey( KeyEvent.VK_UP, "unitScrollUp" );
delegateKey( KeyEvent.VK_DOWN, "unitScrollDown" );
delegateKey( KeyEvent.VK_PAGE_UP, "scrollUp" );
delegateKey( KeyEvent.VK_PAGE_DOWN, "scrollDown" );
// initialize table
table.setModel( new ItemsTableModel( getUIDefaultsItems() ) );
table.setDefaultRenderer( String.class, new KeyRenderer() );
table.setDefaultRenderer( Item.class, new ValueRenderer() );
table.getRowSorter().setSortKeys( Collections.singletonList(
new RowSorter.SortKey( 0, SortOrder.ASCENDING ) ) );
// restore window bounds
Preferences prefs = getPrefs();
int x = prefs.getInt( "x", -1 );
int y = prefs.getInt( "y", -1 );
int width = prefs.getInt( "width", UIScale.scale( 600 ) );
int height = prefs.getInt( "height", UIScale.scale( 800 ) );
frame.setSize( width, height );
if( x != -1 && y != -1 ) {
frame.setLocation( x, y );
ensureOnScreen();
} else
frame.setLocationRelativeTo( null );
// restore column widths
TableColumnModel columnModel = table.getColumnModel();
columnModel.getColumn( 0 ).setPreferredWidth( prefs.getInt( "column1width", 100 ) );
columnModel.getColumn( 1 ).setPreferredWidth( prefs.getInt( "column2width", 100 ) );
// restore filter
String filter = prefs.get( "filter", "" );
String valueType = prefs.get( "valueType", null );
if( filter != null && !filter.isEmpty() )
filterField.setText( filter );
if( valueType != null )
valueTypeField.setSelectedItem( valueType );
UIManager.addPropertyChangeListener( lafListener );
UIManager.getDefaults().addPropertyChangeListener( lafDefaultsListener );
// register F5 key to refresh
((JComponent)frame.getContentPane()).registerKeyboardAction(
e -> refresh(),
KeyStroke.getKeyStroke( KeyEvent.VK_F5, 0, false ),
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT );
// register ESC key to close frame
((JComponent)frame.getContentPane()).registerKeyboardAction(
e -> frame.dispose(),
KeyStroke.getKeyStroke( KeyEvent.VK_ESCAPE, 0, false ),
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT );
}
private void delegateKey( int keyCode, String actionKey ) {
KeyStroke keyStroke = KeyStroke.getKeyStroke( keyCode, 0 );
String actionMapKey = "delegate-" + actionKey;
filterField.getInputMap().put( keyStroke, actionMapKey );
filterField.getActionMap().put( actionMapKey, new AbstractAction() {
@Override
public void actionPerformed( ActionEvent e ) {
Action action = scrollPane.getActionMap().get( actionKey );
if( action != null ) {
action.actionPerformed( new ActionEvent( scrollPane,
e.getID(), actionKey, e.getWhen(), e.getModifiers() ) );
}
}
} );
}
private void ensureOnScreen() {
Rectangle frameBounds = frame.getBounds();
boolean onScreen = false;
for( GraphicsDevice screen : GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices() ) {
GraphicsConfiguration gc = screen.getDefaultConfiguration();
Rectangle screenBounds = FlatUIUtils.subtractInsets( gc.getBounds(),
Toolkit.getDefaultToolkit().getScreenInsets( gc ) );
if( frameBounds.intersects( screenBounds ) ) {
onScreen = true;
break;
}
}
if( !onScreen )
frame.setLocationRelativeTo( null );
}
void lafChanged( PropertyChangeEvent e ) {
if( "lookAndFeel".equals( e.getPropertyName() ) )
refresh();
}
void lafDefaultsChanged( PropertyChangeEvent e ) {
if( refreshPending )
return;
refreshPending = true;
EventQueue.invokeLater( () -> {
refresh();
refreshPending = false;
} );
}
void refresh() {
ItemsTableModel model = (ItemsTableModel) table.getModel();
model.setItems( getUIDefaultsItems() );
updateWindowTitle();
}
private Item[] getUIDefaultsItems() {
UIDefaults defaults = UIManager.getDefaults();
UIDefaults lafDefaults = UIManager.getLookAndFeelDefaults();
Set<Entry<Object, Object>> defaultsSet = defaults.entrySet();
ArrayList<Item> items = new ArrayList<>( defaultsSet.size() );
HashSet<Object> keys = new HashSet<>( defaultsSet.size() );
for( Entry<Object,Object> e : defaultsSet ) {
Object key = e.getKey();
// ignore non-string keys
if( !(key instanceof String) )
continue;
// ignore values of type Class
Object value = defaults.get( key );
if( value instanceof Class )
continue;
// avoid duplicate keys if UIManager.put(key,value) was used to override a LaF value
if( !keys.add( key ) )
continue;
// check whether key was overridden using UIManager.put(key,value)
Object lafValue = null;
if( defaults.containsKey( key ) )
lafValue = lafDefaults.get( key );
// add item
items.add( new Item( String.valueOf( key ), value, lafValue ) );
}
return items.toArray( new Item[items.size()] );
}
private void updateWindowTitle() {
frame.setTitle( title + " - " + UIManager.getLookAndFeel().getName() );
}
private void saveWindowBounds() {
Preferences prefs = getPrefs();
prefs.putInt( "x", frame.getX() );
prefs.putInt( "y", frame.getY() );
prefs.putInt( "width", frame.getWidth() );
prefs.putInt( "height", frame.getHeight() );
TableColumnModel columnModel = table.getColumnModel();
prefs.putInt( "column1width", columnModel.getColumn( 0 ).getWidth() );
prefs.putInt( "column2width", columnModel.getColumn( 1 ).getWidth() );
}
private Preferences getPrefs() {
return Preferences.userRoot().node( "flatlaf-uidefaults-inspector" );
}
private void windowClosed() {
UIManager.removePropertyChangeListener( lafListener );
UIManager.getDefaults().removePropertyChangeListener( lafDefaultsListener );
inspector = null;
}
private void filterChanged() {
String filter = filterField.getText().trim();
String valueType = (String) valueTypeField.getSelectedItem();
// split filter string on space characters
String[] filters = filter.split( " +" );
for( int i = 0; i < filters.length; i++ )
filters[i] = filters[i].toLowerCase( Locale.ENGLISH );
ItemsTableModel model = (ItemsTableModel) table.getModel();
model.setFilter( item -> {
if( valueType != null &&
!valueType.equals( "(any)" ) &&
!valueType.equals( typeOfValue( item.value ) ) )
return false;
String lkey = item.key.toLowerCase( Locale.ENGLISH );
String lvalue = item.getValueAsString().toLowerCase( Locale.ENGLISH );
for( String f : filters ) {
if( lkey.contains( f ) || lvalue.contains( f ) )
return true;
}
return false;
} );
Preferences prefs = getPrefs();
prefs.put( "filter", filter );
prefs.put( "valueType", valueType );
}
private String typeOfValue( Object value ) {
if( value instanceof Boolean )
return "Boolean";
if( value instanceof Border )
return "Border";
if( value instanceof Color )
return "Color";
if( value instanceof Dimension )
return "Dimension";
if( value instanceof Float )
return "Float";
if( value instanceof Font )
return "Font";
if( value instanceof Icon )
return "Icon";
if( value instanceof Insets )
return "Insets";
if( value instanceof Integer )
return "Integer";
if( value instanceof String )
return "String";
return "(other)";
}
private void initComponents() {
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
frame = new JFrame();
panel = new JPanel();
filterPanel = new JPanel();
flterLabel = new JLabel();
filterField = new JTextField();
valueTypeLabel = new JLabel();
valueTypeField = new JComboBox<>();
scrollPane = new JScrollPane();
table = new JTable();
//======== frame ========
{
frame.setTitle("UI Defaults Inspector");
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) {
FlatUIDefaultsInspector.this.windowClosed();
}
@Override
public void windowClosing(WindowEvent e) {
saveWindowBounds();
}
@Override
public void windowDeactivated(WindowEvent e) {
saveWindowBounds();
}
});
Container frameContentPane = frame.getContentPane();
frameContentPane.setLayout(new BorderLayout());
//======== panel ========
{
panel.setLayout(new BorderLayout());
//======== filterPanel ========
{
filterPanel.setLayout(new GridBagLayout());
((GridBagLayout)filterPanel.getLayout()).columnWidths = new int[] {0, 0, 0, 0, 0};
((GridBagLayout)filterPanel.getLayout()).rowHeights = new int[] {0, 0};
((GridBagLayout)filterPanel.getLayout()).columnWeights = new double[] {0.0, 1.0, 0.0, 0.0, 1.0E-4};
((GridBagLayout)filterPanel.getLayout()).rowWeights = new double[] {0.0, 1.0E-4};
//---- flterLabel ----
flterLabel.setText("Filter:");
flterLabel.setLabelFor(filterField);
flterLabel.setDisplayedMnemonic('F');
filterPanel.add(flterLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 0, 10), 0, 0));
//---- filterField ----
filterField.putClientProperty("JTextField.placeholderText", "enter one or more filter strings, separated by space characters");
filterPanel.add(filterField, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 0, 10), 0, 0));
//---- valueTypeLabel ----
valueTypeLabel.setText("Value Type:");
valueTypeLabel.setLabelFor(valueTypeField);
valueTypeLabel.setDisplayedMnemonic('T');
filterPanel.add(valueTypeLabel, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 0, 10), 0, 0));
//---- valueTypeField ----
valueTypeField.setModel(new DefaultComboBoxModel<>(new String[] {
"(any)",
"Boolean",
"Border",
"Color",
"Dimension",
"Float",
"Font",
"Icon",
"Insets",
"Integer",
"String",
"(other)"
}));
valueTypeField.addActionListener(e -> filterChanged());
filterPanel.add(valueTypeField, new GridBagConstraints(3, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 0, 0), 0, 0));
}
panel.add(filterPanel, BorderLayout.NORTH);
//======== scrollPane ========
{
//---- table ----
table.setAutoCreateRowSorter(true);
scrollPane.setViewportView(table);
}
panel.add(scrollPane, BorderLayout.CENTER);
}
frameContentPane.add(panel, BorderLayout.CENTER);
}
// JFormDesigner - End of component initialization //GEN-END:initComponents
}
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
private JFrame frame;
private JPanel panel;
private JPanel filterPanel;
private JLabel flterLabel;
private JTextField filterField;
private JLabel valueTypeLabel;
private JComboBox<String> valueTypeField;
private JScrollPane scrollPane;
private JTable table;
// JFormDesigner - End of variables declaration //GEN-END:variables
//---- class Item ---------------------------------------------------------
private static class Item {
final String key;
final Object value;
final Object lafValue;
private String valueStr;
Item( String key, Object value, Object lafValue ) {
this.key = key;
this.value = value;
this.lafValue = lafValue;
}
String getValueAsString() {
if( valueStr == null )
valueStr = valueAsString( value );
return valueStr;
}
static String valueAsString( Object value ) {
if( value instanceof Color ) {
Color color = (Color) value;
HSLColor hslColor = new HSLColor( color );
if( color.getAlpha() == 255 ) {
return String.format( "%s rgb(%d, %d, %d) hsl(%d, %d, %d)",
color2hex( color ),
color.getRed(), color.getGreen(), color.getBlue(),
(int) hslColor.getHue(), (int) hslColor.getSaturation(),
(int) hslColor.getLuminance() );
} else {
return String.format( "%s rgba(%d, %d, %d, %d) hsla(%d, %d, %d, %d)",
color2hex( color ),
color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha(),
(int) hslColor.getHue(), (int) hslColor.getSaturation(),
(int) hslColor.getLuminance(), (int) (hslColor.getAlpha() * 100) );
}
} else if( value instanceof Insets ) {
Insets insets = (Insets) value;
return insets.top + "," + insets.left + "," + insets.bottom + "," + insets.right;
} else if( value instanceof Dimension ) {
Dimension dim = (Dimension) value;
return dim.width + "," + dim.height;
} else if( value instanceof Font ) {
Font font = (Font) value;
String s = font.getFamily() + " " + font.getSize();
if( font.isBold() )
s += " bold";
if( font.isItalic() )
s += " italic";
return s;
} else if( value instanceof Icon ) {
Icon icon = (Icon) value;
return icon.getIconWidth() + "x" + icon.getIconHeight() + " " + icon.getClass().getName();
} else if( value instanceof Border ) {
Border border = (Border) value;
if( border instanceof FlatLineBorder ) {
FlatLineBorder lineBorder = (FlatLineBorder) border;
return valueAsString( lineBorder.getUnscaledBorderInsets() )
+ " " + Item.color2hex( lineBorder.getLineColor() )
+ " " + lineBorder.getLineThickness()
+ " " + border.getClass().getName();
} else if( border instanceof EmptyBorder ) {
Insets insets = (border instanceof FlatEmptyBorder)
? ((FlatEmptyBorder)border).getUnscaledBorderInsets()
: ((EmptyBorder)border).getBorderInsets();
return valueAsString( insets ) + " " + border.getClass().getName();
} else if( border instanceof FlatBorder || border instanceof FlatMarginBorder )
return border.getClass().getName();
else
return String.valueOf( value );
} else if( value instanceof GrayFilter ) {
GrayFilter grayFilter = (GrayFilter) value;
return grayFilter.getBrightness() + "," + grayFilter.getContrast()
+ " " + grayFilter.getAlpha() + " " + grayFilter.getClass().getName();
} else if( value instanceof ActionMap ) {
ActionMap actionMap = (ActionMap) value;
return "ActionMap (" + actionMap.size() + ")";
} else if( value instanceof InputMap ) {
InputMap inputMap = (InputMap) value;
return "InputMap (" + inputMap.size() + ")";
} else if( value instanceof Object[] )
return Arrays.toString( (Object[]) value );
else if( value instanceof int[] )
return Arrays.toString( (int[]) value );
else
return String.valueOf( value );
}
private static String color2hex( Color color ) {
int rgb = color.getRGB();
boolean hasAlpha = color.getAlpha() != 255;
boolean useShortFormat =
(rgb & 0xf0000000) == (rgb & 0xf000000) << 4 &&
(rgb & 0xf00000) == (rgb & 0xf0000) << 4 &&
(rgb & 0xf000) == (rgb & 0xf00) << 4 &&
(rgb & 0xf0) == (rgb & 0xf) << 4;
if( useShortFormat ) {
int srgb = ((rgb & 0xf0000) >> 8) | ((rgb & 0xf00) >> 4) | (rgb & 0xf);
return String.format( hasAlpha ? "#%03X%X" : "#%03X", srgb, (rgb >> 24) & 0xf );
} else
return String.format( hasAlpha ? "#%06X%02X" : "#%06X", rgb & 0xffffff, (rgb >> 24) & 0xff );
}
// used for sorting by value
@Override
public String toString() {
return getValueAsString();
}
}
//---- class ItemsTableModel ----------------------------------------------
private static class ItemsTableModel
extends AbstractTableModel
{
private Item[] allItems;
private Item[] items;
private Predicate<Item> filter;
ItemsTableModel( Item[] items ) {
this.allItems = this.items = items;
}
void setItems( Item[] items ) {
this.allItems = this.items = items;
setFilter( filter );
}
void setFilter( Predicate<Item> filter ) {
this.filter = filter;
if( filter != null ) {
ArrayList<Item> list = new ArrayList<>( allItems.length );
for( Item item : allItems ) {
if( filter.test( item ) )
list.add( item );
}
items = list.toArray( new Item[list.size()] );
} else
items = allItems;
fireTableDataChanged();
}
@Override
public int getRowCount() {
return items.length;
}
@Override
public int getColumnCount() {
return 2;
}
@Override
public String getColumnName( int columnIndex ) {
switch( columnIndex ) {
case 0: return "Name";
case 1: return "Value";
}
return super.getColumnName( columnIndex );
}
@Override
public Class<?> getColumnClass( int columnIndex ) {
switch( columnIndex ) {
case 0: return String.class;
case 1: return Item.class;
}
return super.getColumnClass( columnIndex );
}
@Override
public Object getValueAt( int rowIndex, int columnIndex ) {
Item item = items[rowIndex];
switch( columnIndex ) {
case 0: return item.key;
case 1: return item;
}
return null;
}
}
//---- class Renderer -----------------------------------------------------
private static class Renderer
extends DefaultTableCellRenderer
{
protected boolean selected;
protected boolean first;
protected void init( JTable table, String key, boolean selected, int row ) {
this.selected = selected;
first = false;
if( row > 0 ) {
String previousKey = (String) table.getValueAt( row - 1, 0 );
int dot = key.indexOf( '.' );
if( dot > 0 ) {
String prefix = key.substring( 0, dot + 1 );
first = !previousKey.startsWith( prefix );
} else
first = previousKey.indexOf( '.' ) > 0;
}
}
protected void paintSeparator( Graphics g ) {
if( first && !selected ) {
g.setColor( FlatLaf.isLafDark() ? Color.gray : Color.lightGray );
g.fillRect( 0, 0, getWidth() - 1, 1 );
}
}
protected String layoutLabel( FontMetrics fm, String text, Rectangle textR ) {
int width = getWidth();
int height = getHeight();
Insets insets = getInsets();
Rectangle viewR = new Rectangle( insets.left, insets.top,
width - (insets.left + insets.right),
height - (insets.top + insets.bottom) );
Rectangle iconR = new Rectangle();
return SwingUtilities.layoutCompoundLabel( this, fm, text, null,
getVerticalAlignment(), getHorizontalAlignment(),
getVerticalTextPosition(), getHorizontalTextPosition(),
viewR, iconR, textR, getIconTextGap() );
}
}
//---- class KeyRenderer --------------------------------------------------
private static class KeyRenderer
extends Renderer
{
private String key;
private boolean isOverridden;
private Icon overriddenIcon;
@Override
public Component getTableCellRendererComponent( JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column )
{
key = (String) value;
init( table, key, isSelected, row );
Item item = (Item) table.getValueAt( row, 1 );
isOverridden = (item.lafValue != null);
// set tooltip
String toolTipText = key;
if( isOverridden )
toolTipText += " \n\nLaF UI default value was overridden with UIManager.put(key,value).";
setToolTipText( toolTipText );
return super.getTableCellRendererComponent( table, value, isSelected, hasFocus, row, column );
}
@Override
protected void paintComponent( Graphics g ) {
g.setColor( getBackground() );
g.fillRect( 0, 0, getWidth(), getHeight() );
FontMetrics fm = getFontMetrics( getFont() );
Rectangle textR = new Rectangle();
String clippedText = layoutLabel( fm, key, textR );
int x = textR.x;
int y = textR.y + fm.getAscent();
int dot = key.indexOf( '.' );
if( dot > 0 && !selected ) {
g.setColor( FlatUIUtils.getUIColor( "Label.disabledForeground",
FlatUIUtils.getUIColor( "Label.disabledText", Color.gray ) ) );
if( dot >= clippedText.length() )
FlatUIUtils.drawString( this, g, clippedText, x, y );
else {
String prefix = clippedText.substring( 0, dot + 1 );
String subkey = clippedText.substring( dot + 1 );
FlatUIUtils.drawString( this, g, prefix, x, y );
g.setColor( getForeground() );
FlatUIUtils.drawString( this, g, subkey, x + fm.stringWidth( prefix ), y );
}
} else {
g.setColor( getForeground() );
FlatUIUtils.drawString( this, g, clippedText, x, y );
}
if( isOverridden ) {
if( overriddenIcon == null ) {
overriddenIcon = new FlatAbstractIcon( 16, 16, null ) {
@Override
protected void paintIcon( Component c, Graphics2D g2 ) {
g2.setColor( FlatUIUtils.getUIColor( "Actions.Red", Color.red ) );
g2.setStroke( new BasicStroke( 2f ) );
g2.draw( FlatUIUtils.createPath( false, 3,10, 8,5, 13,10 ) );
}
};
}
overriddenIcon.paintIcon( this, g,
getWidth() - overriddenIcon.getIconWidth(),
(getHeight() - overriddenIcon.getIconHeight()) / 2 );
}
paintSeparator( g );
}
}
//---- class ValueRenderer ------------------------------------------------
private static class ValueRenderer
extends Renderer
{
private Item item;
@Override
public Component getTableCellRendererComponent( JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column )
{
item = (Item) value;
init( table, item.key, isSelected, row );
// reset background, foreground and icon
if( !(item.value instanceof Color) ) {
setBackground( null );
setForeground( null );
}
if( !(item.value instanceof Icon) )
setIcon( null );
// value to string
value = item.getValueAsString();
super.getTableCellRendererComponent( table, value, isSelected, hasFocus, row, column );
if( item.value instanceof Color ) {
Color color = (Color) item.value;
boolean isDark = new HSLColor( color ).getLuminance() < 70;
setBackground( color );
setForeground( isDark ? Color.white : Color.black );
} else if( item.value instanceof Icon ) {
Icon icon = (Icon) item.value;
setIcon( new SafeIcon( icon ) );
}
// set tooltip
String toolTipText = String.valueOf( item.value );
if( item.lafValue != null ) {
toolTipText += " \n\nLaF UI default value was overridden with UIManager.put(key,value):\n "
+ Item.valueAsString( item.lafValue ) + "\n " + String.valueOf( item.lafValue );
}
setToolTipText( toolTipText );
return this;
}
@Override
protected void paintComponent( Graphics g ) {
if( item.value instanceof Color ) {
// fill background
g.setColor( getBackground() );
g.fillRect( 0, 0, getWidth(), getHeight() );
// layout text
FontMetrics fm = getFontMetrics( getFont() );
String text = getText();
Rectangle textR = new Rectangle();
layoutLabel( fm, text, textR );
int x = textR.x;
int y = textR.y + fm.getAscent();
g.setColor( getForeground() );
// paint rgb() and hsl() horizontally aligned
int rgbIndex = text.indexOf( "rgb" );
int hslIndex = text.indexOf( "hsl" );
if( rgbIndex > 0 && hslIndex > rgbIndex ) {
String hexText = text.substring( 0, rgbIndex );
String rgbText = text.substring( rgbIndex, hslIndex );
String hslText = text.substring( hslIndex );
int hexWidth = Math.max( fm.stringWidth( hexText ), fm.stringWidth( "#DDDDDD " ) );
int rgbWidth = Math.max( fm.stringWidth( rgbText ), fm.stringWidth( "rgb(444, 444, 444) " ) );
FlatUIUtils.drawString( this, g, hexText, x, y );
FlatUIUtils.drawString( this, g, rgbText, x + hexWidth, y );
FlatUIUtils.drawString( this, g, hslText, x + hexWidth + rgbWidth, y );
} else
FlatUIUtils.drawString( this, g, text, x, y );
} else
super.paintComponent( g );
paintSeparator( g );
}
}
//---- class SafeIcon -----------------------------------------------------
private static class SafeIcon
implements Icon
{
private final Icon icon;
SafeIcon( Icon icon ) {
this.icon = icon;
}
@Override
public void paintIcon( Component c, Graphics g, int x, int y ) {
int width = getIconWidth();
int height = getIconHeight();
try {
g.setColor( UIManager.getColor( "Panel.background" ) );
g.fillRect( x, y, width, height );
icon.paintIcon( c, g, x, y );
} catch( Exception ex ) {
g.setColor( Color.red );
g.drawRect( x, y, width - 1, height - 1 );
}
}
@Override
public int getIconWidth() {
return icon.getIconWidth();
}
@Override
public int getIconHeight() {
return icon.getIconHeight();
}
}
}

View File

@@ -0,0 +1,90 @@
JFDML JFormDesigner: "7.0.2.0.298" Java: "14" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
root: new FormRoot {
add( new FormWindow( "javax.swing.JFrame", new FormLayoutManager( class java.awt.BorderLayout ) ) {
name: "frame"
"title": "UI Defaults Inspector"
"defaultCloseOperation": 2
"$sizePolicy": 2
"$locationPolicy": 2
addEvent( new FormEvent( "java.awt.event.WindowListener", "windowClosed", "windowClosed", false ) )
addEvent( new FormEvent( "java.awt.event.WindowListener", "windowClosing", "saveWindowBounds", false ) )
addEvent( new FormEvent( "java.awt.event.WindowListener", "windowDeactivated", "saveWindowBounds", false ) )
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.BorderLayout ) ) {
name: "panel"
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.GridBagLayout ) {
"$columnSpecs": "0, 0:1.0, 0, 0"
"$rowSpecs": "0"
"$hGap": 10
"$vGap": 5
"$alignLeft": true
"$alignTop": true
} ) {
name: "filterPanel"
add( new FormComponent( "javax.swing.JLabel" ) {
name: "flterLabel"
"text": "Filter:"
"labelFor": new FormReference( "filterField" )
"displayedMnemonic": 70
}, new FormLayoutConstraints( class com.jformdesigner.runtime.GridBagConstraintsEx ) )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "filterField"
"$client.JTextField.placeholderText": "enter one or more filter strings, separated by space characters"
}, new FormLayoutConstraints( class com.jformdesigner.runtime.GridBagConstraintsEx ) {
"gridx": 1
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "valueTypeLabel"
"text": "Value Type:"
"labelFor": new FormReference( "valueTypeField" )
"displayedMnemonic": 84
}, new FormLayoutConstraints( class com.jformdesigner.runtime.GridBagConstraintsEx ) {
"gridx": 2
} )
add( new FormComponent( "javax.swing.JComboBox" ) {
name: "valueTypeField"
"model": new javax.swing.DefaultComboBoxModel {
selectedItem: "(any)"
addElement( "(any)" )
addElement( "Boolean" )
addElement( "Border" )
addElement( "Color" )
addElement( "Dimension" )
addElement( "Float" )
addElement( "Font" )
addElement( "Icon" )
addElement( "Insets" )
addElement( "Integer" )
addElement( "String" )
addElement( "(other)" )
}
auxiliary() {
"JavaCodeGenerator.typeParameters": "String"
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "filterChanged", false ) )
}, new FormLayoutConstraints( class com.jformdesigner.runtime.GridBagConstraintsEx ) {
"gridx": 3
} )
}, new FormLayoutConstraints( class java.lang.String ) {
"value": "North"
} )
add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
name: "scrollPane"
add( new FormComponent( "javax.swing.JTable" ) {
name: "table"
"autoCreateRowSorter": true
} )
}, new FormLayoutConstraints( class java.lang.String ) {
"value": "Center"
} )
}, new FormLayoutConstraints( class java.lang.String ) {
"value": "Center"
} )
}, new FormLayoutConstraints( null ) {
"location": new java.awt.Point( 0, 0 )
"size": new java.awt.Dimension( 400, 300 )
} )
}
}

View File

@@ -19,6 +19,7 @@
*/
module com.formdev.flatlaf.extras {
requires java.desktop;
requires java.prefs;
requires static com.kitfox.svg; // optional at runtime
requires com.formdev.flatlaf;

View File

@@ -23,6 +23,8 @@
},
"ui": {
"*": {
"acceleratorForeground": "colorAcceleratorForeground",
"acceleratorSelectionForeground": "colorAcceleratorSelectionForeground",
"background": "colorBackground",
"caretForeground": "colorForeground",
"disabledForeground": "colorDisabledForeground",
@@ -68,10 +70,7 @@
"startBorderColor": "#476069"
},
"CheckBox": {},
"CheckBoxMenuItem": {
"acceleratorForeground": "colorAcceleratorForeground",
"acceleratorSelectionForeground": "colorAcceleratorSelectionForeground"
},
"CheckBoxMenuItem": {},
"ColorChooser": {
"swatchesDefaultRecentColor": "colorBackground"
},
@@ -257,8 +256,6 @@
"usedBackground": "#566C73"
},
"Menu": {
"acceleratorForeground": "colorAcceleratorForeground",
"acceleratorSelectionForeground": "colorAcceleratorSelectionForeground",
"borderColor": "colorSeparator",
"separatorColor": "colorSeparator"
},
@@ -372,10 +369,7 @@
"trackColor": "#36525B"
},
"RadioButton": {},
"RadioButtonMenuItem": {
"acceleratorForeground": "colorAcceleratorForeground",
"acceleratorSelectionForeground": "colorAcceleratorSelectionForeground"
},
"RadioButtonMenuItem": {},
"ScrollBar": {
"background": "#14414F",
"hoverThumbBorderColor": "#0A384459",
@@ -441,6 +435,11 @@
"Separator": {
"separatorColor": "colorSeparator"
},
"Settings": {
"Spotlight": {
"borderColor": "#9A670064"
}
},
"SidePanel": {
"background": "#0E4155"
},

View File

@@ -23,6 +23,8 @@
},
"ui": {
"*": {
"acceleratorForeground": "colorAcceleratorForeground",
"acceleratorSelectionForeground": "colorAcceleratorSelectionForeground",
"background": "colorBackground",
"caretForeground": "colorForeground",
"disabledForeground": "colorDisabledForeground",
@@ -68,10 +70,7 @@
"startBorderColor": "#B4BAB5"
},
"CheckBox": {},
"CheckBoxMenuItem": {
"acceleratorForeground": "colorAcceleratorForeground",
"acceleratorSelectionForeground": "colorAcceleratorSelectionForeground"
},
"CheckBoxMenuItem": {},
"ColorChooser": {
"swatchesDefaultRecentColor": "#CFD0C3"
},
@@ -263,8 +262,6 @@
"usedBackground": "#ADB5AF"
},
"Menu": {
"acceleratorForeground": "colorAcceleratorForeground",
"acceleratorSelectionForeground": "colorAcceleratorSelectionForeground",
"borderColor": "#D3D2C6",
"disabledBackground": "colorBackground",
"separatorColor": "colorSeparator"
@@ -378,10 +375,7 @@
"trackColor": "#BAC0B8"
},
"RadioButton": {},
"RadioButtonMenuItem": {
"acceleratorForeground": "colorAcceleratorForeground",
"acceleratorSelectionForeground": "colorAcceleratorSelectionForeground"
},
"RadioButtonMenuItem": {},
"ScrollBar": {
"background": "#F5F0E3",
"hoverThumbBorderColor": "#4B5A5F47",
@@ -445,6 +439,11 @@
"Separator": {
"separatorColor": "colorSeparator"
},
"Settings": {
"Spotlight": {
"borderColor": "#F6C00064"
}
},
"SidePanel": {
"background": "#E2E2D4"
},

View File

@@ -16,7 +16,7 @@
#---- BusyLabel ----
JXBusyLabel.baseColor=#777777
JXBusyLabel.baseColor=#777
JXBusyLabel.highlightColor=#e0e0e0
@@ -38,8 +38,8 @@ Hyperlink.disabledText=@disabledText
JXMonthView.background=@textComponentBackground
JXMonthView.monthStringBackground=#4c5052
JXMonthView.monthStringForeground=@foreground
JXMonthView.daysOfTheWeekForeground=#aaaaaa
JXMonthView.weekOfTheYearForeground=#888888
JXMonthView.daysOfTheWeekForeground=#aaa
JXMonthView.weekOfTheYearForeground=#888
JXMonthView.unselectableDayForeground=#E05555
JXMonthView.selectedBackground=@selectionBackground
JXMonthView.flaggedDayForeground=#E05555
@@ -63,7 +63,7 @@ TaskPane.contentInsets=10,10,10,10
TaskPane.titleBackgroundGradientStart=#4c5052
TaskPane.titleForeground=@foreground
TaskPane.titleOver=#888888
TaskPane.titleOver=#888
TaskPane.specialTitleBackground=#afafaf
TaskPane.specialTitleForeground=#222222
TaskPane.specialTitleOver=#666666
TaskPane.specialTitleForeground=#222
TaskPane.specialTitleOver=#666

View File

@@ -23,7 +23,7 @@ JXBusyLabel.highlightColor=#808080
#---- Header ----
JXHeader.background=@background
JXHeader.startBackground=#ffffff
JXHeader.startBackground=#fff
#---- Hyperlink ----
@@ -38,8 +38,8 @@ Hyperlink.disabledText=@disabledText
JXMonthView.background=@textComponentBackground
JXMonthView.monthStringBackground=#dfdfdf
JXMonthView.monthStringForeground=@foreground
JXMonthView.daysOfTheWeekForeground=#444444
JXMonthView.weekOfTheYearForeground=#666666
JXMonthView.daysOfTheWeekForeground=#444
JXMonthView.weekOfTheYearForeground=#666
JXMonthView.unselectableDayForeground=#E02222
JXMonthView.selectedBackground=#B9CEF8
JXMonthView.flaggedDayForeground=#E02222
@@ -62,8 +62,8 @@ TaskPane.borderColor=$Button.borderColor
TaskPane.contentInsets=10,10,10,10
TaskPane.titleBackgroundGradientStart=#dfdfdf
TaskPane.titleForeground=#222222
TaskPane.titleOver=#666666
TaskPane.titleForeground=#222
TaskPane.titleOver=#666
TaskPane.specialTitleBackground=#afafaf
TaskPane.specialTitleForeground=#222222
TaskPane.specialTitleOver=#666666
TaskPane.specialTitleForeground=#222
TaskPane.specialTitleOver=#666

View File

@@ -0,0 +1,120 @@
Java version: 1.8.0_202
OS: Windows 10
Screen scale: 1.0
Text scale: 1.0
Java scale: 1.0
Font scale: 1.0
DnD.gestureMotionThreshold 2
awt.dynamicLayoutSupported true
awt.file.showAttribCol false
awt.file.showHiddenFiles true
awt.font.desktophints {Text-specific antialiasing enable key=LCD HRGB antialiasing text mode, Text-specific LCD contrast key=120}
awt.mouse.numButtons 5
awt.multiClickInterval 500
awt.wheelMousePresent true
win.3d.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.3d.darkShadowColor java.awt.Color[r=105,g=105,b=105]
win.3d.highlightColor java.awt.Color[r=255,g=255,b=255]
win.3d.lightColor java.awt.Color[r=227,g=227,b=227]
win.3d.shadowColor java.awt.Color[r=160,g=160,b=160]
win.ansiFixed.font java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13]
win.ansiFixed.font.height 13
win.ansiVar.font java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11]
win.ansiVar.font.height 11
win.button.textColor java.awt.Color[r=0,g=0,b=0]
win.caret.width 1
win.defaultGUI.font java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=11]
win.defaultGUI.font.height 11
win.desktop.backgroundColor java.awt.Color[r=0,g=0,b=0]
win.deviceDefault.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.deviceDefault.font.height 16
win.drag.height 4
win.drag.width 4
win.frame.activeBorderColor java.awt.Color[r=180,g=180,b=180]
win.frame.activeCaptionColor java.awt.Color[r=153,g=180,b=209]
win.frame.activeCaptionGradientColor java.awt.Color[r=185,g=209,b=234]
win.frame.backgroundColor java.awt.Color[r=255,g=255,b=255]
win.frame.captionButtonHeight 22
win.frame.captionButtonWidth 36
win.frame.captionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12]
win.frame.captionFont.height 12
win.frame.captionGradientsOn true
win.frame.captionHeight 22
win.frame.captionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.color java.awt.Color[r=100,g=100,b=100]
win.frame.fullWindowDragsOn true
win.frame.inactiveBorderColor java.awt.Color[r=244,g=247,b=252]
win.frame.inactiveCaptionColor java.awt.Color[r=191,g=205,b=219]
win.frame.inactiveCaptionGradientColor java.awt.Color[r=215,g=228,b=242]
win.frame.inactiveCaptionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.sizingBorderWidth 5
win.frame.smallCaptionButtonHeight 22
win.frame.smallCaptionButtonWidth 22
win.frame.smallCaptionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12]
win.frame.smallCaptionFont.height 12
win.frame.smallCaptionHeight 22
win.frame.textColor java.awt.Color[r=0,g=0,b=0]
win.highContrast.on false
win.icon.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12]
win.icon.font.height 12
win.icon.hspacing 114
win.icon.titleWrappingOn true
win.icon.vspacing 75
win.item.highlightColor java.awt.Color[r=0,g=120,b=215]
win.item.highlightTextColor java.awt.Color[r=255,g=255,b=255]
win.item.hotTrackedColor java.awt.Color[r=0,g=102,b=204]
win.item.hotTrackingOn true
win.mdi.backgroundColor java.awt.Color[r=171,g=171,b=171]
win.menu.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.menu.buttonWidth 19
win.menu.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12]
win.menu.font.height 12
win.menu.height 19
win.menu.keyboardCuesOn false
win.menu.textColor java.awt.Color[r=0,g=0,b=0]
win.menubar.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.messagebox.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12]
win.messagebox.font.height 12
win.oemFixed.font java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18]
win.oemFixed.font.height 18
win.properties.version 3
win.scrollbar.backgroundColor java.awt.Color[r=200,g=200,b=200]
win.scrollbar.height 17
win.scrollbar.width 17
win.sound.asterisk WinPlaySound(SystemAsterisk)
win.sound.close WinPlaySound(Close)
win.sound.default WinPlaySound(.Default)
win.sound.exclamation WinPlaySound(SystemExclamation)
win.sound.exit WinPlaySound(SystemExit)
win.sound.hand WinPlaySound(SystemHand)
win.sound.maximize WinPlaySound(Maximize)
win.sound.menuCommand WinPlaySound(MenuCommand)
win.sound.menuPopup WinPlaySound(MenuPopup)
win.sound.minimize WinPlaySound(Minimize)
win.sound.open WinPlaySound(Open)
win.sound.question WinPlaySound(SystemQuestion)
win.sound.restoreDown WinPlaySound(RestoreDown)
win.sound.restoreUp WinPlaySound(RestoreUp)
win.sound.start WinPlaySound(SystemStart)
win.status.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12]
win.status.font.height 12
win.system.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.system.font.height 16
win.systemFixed.font java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18]
win.systemFixed.font.height 18
win.text.fontSmoothingContrast 1200
win.text.fontSmoothingOn true
win.text.fontSmoothingOrientation 1
win.text.fontSmoothingType 2
win.text.grayedTextColor java.awt.Color[r=109,g=109,b=109]
win.tooltip.backgroundColor java.awt.Color[r=255,g=255,b=225]
win.tooltip.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12]
win.tooltip.font.height 12
win.tooltip.textColor java.awt.Color[r=0,g=0,b=0]
win.xpstyle.colorName NormalColor
win.xpstyle.dllName C:\Windows\resources\themes\Aero\Aero.msstyles
win.xpstyle.sizeName NormalSize
win.xpstyle.themeActive true

View File

@@ -0,0 +1,120 @@
Java version: 1.8.0_202
OS: Windows 10
Screen scale: 1.0
Text scale: 1.25
Java scale: 1.0
Font scale: 1.25
DnD.gestureMotionThreshold 2
awt.dynamicLayoutSupported true
awt.file.showAttribCol false
awt.file.showHiddenFiles true
awt.font.desktophints {Text-specific antialiasing enable key=LCD HRGB antialiasing text mode, Text-specific LCD contrast key=120}
awt.mouse.numButtons 5
awt.multiClickInterval 500
awt.wheelMousePresent true
win.3d.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.3d.darkShadowColor java.awt.Color[r=105,g=105,b=105]
win.3d.highlightColor java.awt.Color[r=255,g=255,b=255]
win.3d.lightColor java.awt.Color[r=227,g=227,b=227]
win.3d.shadowColor java.awt.Color[r=160,g=160,b=160]
win.ansiFixed.font java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13]
win.ansiFixed.font.height 13
win.ansiVar.font java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11]
win.ansiVar.font.height 11
win.button.textColor java.awt.Color[r=0,g=0,b=0]
win.caret.width 1
win.defaultGUI.font java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=11]
win.defaultGUI.font.height 11
win.desktop.backgroundColor java.awt.Color[r=0,g=0,b=0]
win.deviceDefault.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.deviceDefault.font.height 16
win.drag.height 4
win.drag.width 4
win.frame.activeBorderColor java.awt.Color[r=180,g=180,b=180]
win.frame.activeCaptionColor java.awt.Color[r=153,g=180,b=209]
win.frame.activeCaptionGradientColor java.awt.Color[r=185,g=209,b=234]
win.frame.backgroundColor java.awt.Color[r=255,g=255,b=255]
win.frame.captionButtonHeight 22
win.frame.captionButtonWidth 36
win.frame.captionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.frame.captionFont.height 15
win.frame.captionGradientsOn true
win.frame.captionHeight 22
win.frame.captionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.color java.awt.Color[r=100,g=100,b=100]
win.frame.fullWindowDragsOn true
win.frame.inactiveBorderColor java.awt.Color[r=244,g=247,b=252]
win.frame.inactiveCaptionColor java.awt.Color[r=191,g=205,b=219]
win.frame.inactiveCaptionGradientColor java.awt.Color[r=215,g=228,b=242]
win.frame.inactiveCaptionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.sizingBorderWidth 5
win.frame.smallCaptionButtonHeight 22
win.frame.smallCaptionButtonWidth 22
win.frame.smallCaptionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.frame.smallCaptionFont.height 15
win.frame.smallCaptionHeight 22
win.frame.textColor java.awt.Color[r=0,g=0,b=0]
win.highContrast.on false
win.icon.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.icon.font.height 15
win.icon.hspacing 114
win.icon.titleWrappingOn true
win.icon.vspacing 75
win.item.highlightColor java.awt.Color[r=0,g=120,b=215]
win.item.highlightTextColor java.awt.Color[r=255,g=255,b=255]
win.item.hotTrackedColor java.awt.Color[r=0,g=102,b=204]
win.item.hotTrackingOn true
win.mdi.backgroundColor java.awt.Color[r=171,g=171,b=171]
win.menu.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.menu.buttonWidth 19
win.menu.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.menu.font.height 15
win.menu.height 22
win.menu.keyboardCuesOn false
win.menu.textColor java.awt.Color[r=0,g=0,b=0]
win.menubar.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.messagebox.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.messagebox.font.height 15
win.oemFixed.font java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18]
win.oemFixed.font.height 18
win.properties.version 3
win.scrollbar.backgroundColor java.awt.Color[r=200,g=200,b=200]
win.scrollbar.height 17
win.scrollbar.width 17
win.sound.asterisk WinPlaySound(SystemAsterisk)
win.sound.close WinPlaySound(Close)
win.sound.default WinPlaySound(.Default)
win.sound.exclamation WinPlaySound(SystemExclamation)
win.sound.exit WinPlaySound(SystemExit)
win.sound.hand WinPlaySound(SystemHand)
win.sound.maximize WinPlaySound(Maximize)
win.sound.menuCommand WinPlaySound(MenuCommand)
win.sound.menuPopup WinPlaySound(MenuPopup)
win.sound.minimize WinPlaySound(Minimize)
win.sound.open WinPlaySound(Open)
win.sound.question WinPlaySound(SystemQuestion)
win.sound.restoreDown WinPlaySound(RestoreDown)
win.sound.restoreUp WinPlaySound(RestoreUp)
win.sound.start WinPlaySound(SystemStart)
win.status.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.status.font.height 15
win.system.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.system.font.height 16
win.systemFixed.font java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18]
win.systemFixed.font.height 18
win.text.fontSmoothingContrast 1200
win.text.fontSmoothingOn true
win.text.fontSmoothingOrientation 1
win.text.fontSmoothingType 2
win.text.grayedTextColor java.awt.Color[r=109,g=109,b=109]
win.tooltip.backgroundColor java.awt.Color[r=255,g=255,b=225]
win.tooltip.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.tooltip.font.height 15
win.tooltip.textColor java.awt.Color[r=0,g=0,b=0]
win.xpstyle.colorName NormalColor
win.xpstyle.dllName C:\Windows\resources\themes\Aero\Aero.msstyles
win.xpstyle.sizeName NormalSize
win.xpstyle.themeActive true

View File

@@ -0,0 +1,120 @@
Java version: 1.8.0_202
OS: Windows 10
Screen scale: 1.0
Text scale: 1.5
Java scale: 1.0
Font scale: 1.5
DnD.gestureMotionThreshold 2
awt.dynamicLayoutSupported true
awt.file.showAttribCol false
awt.file.showHiddenFiles true
awt.font.desktophints {Text-specific antialiasing enable key=LCD HRGB antialiasing text mode, Text-specific LCD contrast key=120}
awt.mouse.numButtons 5
awt.multiClickInterval 500
awt.wheelMousePresent true
win.3d.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.3d.darkShadowColor java.awt.Color[r=105,g=105,b=105]
win.3d.highlightColor java.awt.Color[r=255,g=255,b=255]
win.3d.lightColor java.awt.Color[r=227,g=227,b=227]
win.3d.shadowColor java.awt.Color[r=160,g=160,b=160]
win.ansiFixed.font java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13]
win.ansiFixed.font.height 13
win.ansiVar.font java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11]
win.ansiVar.font.height 11
win.button.textColor java.awt.Color[r=0,g=0,b=0]
win.caret.width 1
win.defaultGUI.font java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=11]
win.defaultGUI.font.height 11
win.desktop.backgroundColor java.awt.Color[r=0,g=0,b=0]
win.deviceDefault.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.deviceDefault.font.height 16
win.drag.height 4
win.drag.width 4
win.frame.activeBorderColor java.awt.Color[r=180,g=180,b=180]
win.frame.activeCaptionColor java.awt.Color[r=153,g=180,b=209]
win.frame.activeCaptionGradientColor java.awt.Color[r=185,g=209,b=234]
win.frame.backgroundColor java.awt.Color[r=255,g=255,b=255]
win.frame.captionButtonHeight 27
win.frame.captionButtonWidth 44
win.frame.captionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.frame.captionFont.height 18
win.frame.captionGradientsOn true
win.frame.captionHeight 27
win.frame.captionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.color java.awt.Color[r=100,g=100,b=100]
win.frame.fullWindowDragsOn true
win.frame.inactiveBorderColor java.awt.Color[r=244,g=247,b=252]
win.frame.inactiveCaptionColor java.awt.Color[r=191,g=205,b=219]
win.frame.inactiveCaptionGradientColor java.awt.Color[r=215,g=228,b=242]
win.frame.inactiveCaptionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.sizingBorderWidth 5
win.frame.smallCaptionButtonHeight 27
win.frame.smallCaptionButtonWidth 22
win.frame.smallCaptionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.frame.smallCaptionFont.height 18
win.frame.smallCaptionHeight 27
win.frame.textColor java.awt.Color[r=0,g=0,b=0]
win.highContrast.on false
win.icon.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.icon.font.height 18
win.icon.hspacing 114
win.icon.titleWrappingOn true
win.icon.vspacing 75
win.item.highlightColor java.awt.Color[r=0,g=120,b=215]
win.item.highlightTextColor java.awt.Color[r=255,g=255,b=255]
win.item.hotTrackedColor java.awt.Color[r=0,g=102,b=204]
win.item.hotTrackingOn true
win.mdi.backgroundColor java.awt.Color[r=171,g=171,b=171]
win.menu.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.menu.buttonWidth 19
win.menu.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.menu.font.height 18
win.menu.height 27
win.menu.keyboardCuesOn false
win.menu.textColor java.awt.Color[r=0,g=0,b=0]
win.menubar.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.messagebox.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.messagebox.font.height 18
win.oemFixed.font java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18]
win.oemFixed.font.height 18
win.properties.version 3
win.scrollbar.backgroundColor java.awt.Color[r=200,g=200,b=200]
win.scrollbar.height 17
win.scrollbar.width 17
win.sound.asterisk WinPlaySound(SystemAsterisk)
win.sound.close WinPlaySound(Close)
win.sound.default WinPlaySound(.Default)
win.sound.exclamation WinPlaySound(SystemExclamation)
win.sound.exit WinPlaySound(SystemExit)
win.sound.hand WinPlaySound(SystemHand)
win.sound.maximize WinPlaySound(Maximize)
win.sound.menuCommand WinPlaySound(MenuCommand)
win.sound.menuPopup WinPlaySound(MenuPopup)
win.sound.minimize WinPlaySound(Minimize)
win.sound.open WinPlaySound(Open)
win.sound.question WinPlaySound(SystemQuestion)
win.sound.restoreDown WinPlaySound(RestoreDown)
win.sound.restoreUp WinPlaySound(RestoreUp)
win.sound.start WinPlaySound(SystemStart)
win.status.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.status.font.height 18
win.system.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.system.font.height 16
win.systemFixed.font java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18]
win.systemFixed.font.height 18
win.text.fontSmoothingContrast 1200
win.text.fontSmoothingOn true
win.text.fontSmoothingOrientation 1
win.text.fontSmoothingType 2
win.text.grayedTextColor java.awt.Color[r=109,g=109,b=109]
win.tooltip.backgroundColor java.awt.Color[r=255,g=255,b=225]
win.tooltip.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.tooltip.font.height 18
win.tooltip.textColor java.awt.Color[r=0,g=0,b=0]
win.xpstyle.colorName NormalColor
win.xpstyle.dllName C:\Windows\resources\themes\Aero\Aero.msstyles
win.xpstyle.sizeName NormalSize
win.xpstyle.themeActive true

View File

@@ -0,0 +1,120 @@
Java version: 1.8.0_202
OS: Windows 10
Screen scale: 1.25
Text scale: 1.25
Java scale: 1.0
Font scale: 1.5
DnD.gestureMotionThreshold 2
awt.dynamicLayoutSupported true
awt.file.showAttribCol false
awt.file.showHiddenFiles true
awt.font.desktophints {Text-specific antialiasing enable key=LCD HRGB antialiasing text mode, Text-specific LCD contrast key=120}
awt.mouse.numButtons 5
awt.multiClickInterval 500
awt.wheelMousePresent true
win.3d.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.3d.darkShadowColor java.awt.Color[r=105,g=105,b=105]
win.3d.highlightColor java.awt.Color[r=255,g=255,b=255]
win.3d.lightColor java.awt.Color[r=227,g=227,b=227]
win.3d.shadowColor java.awt.Color[r=160,g=160,b=160]
win.ansiFixed.font java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13]
win.ansiFixed.font.height 13
win.ansiVar.font java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11]
win.ansiVar.font.height 11
win.button.textColor java.awt.Color[r=0,g=0,b=0]
win.caret.width 1
win.defaultGUI.font java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=13]
win.defaultGUI.font.height 13
win.desktop.backgroundColor java.awt.Color[r=0,g=0,b=0]
win.deviceDefault.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.deviceDefault.font.height 16
win.drag.height 4
win.drag.width 4
win.frame.activeBorderColor java.awt.Color[r=180,g=180,b=180]
win.frame.activeCaptionColor java.awt.Color[r=153,g=180,b=209]
win.frame.activeCaptionGradientColor java.awt.Color[r=185,g=209,b=234]
win.frame.backgroundColor java.awt.Color[r=255,g=255,b=255]
win.frame.captionButtonHeight 28
win.frame.captionButtonWidth 46
win.frame.captionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=19]
win.frame.captionFont.height 19
win.frame.captionGradientsOn true
win.frame.captionHeight 28
win.frame.captionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.color java.awt.Color[r=100,g=100,b=100]
win.frame.fullWindowDragsOn true
win.frame.inactiveBorderColor java.awt.Color[r=244,g=247,b=252]
win.frame.inactiveCaptionColor java.awt.Color[r=191,g=205,b=219]
win.frame.inactiveCaptionGradientColor java.awt.Color[r=215,g=228,b=242]
win.frame.inactiveCaptionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.sizingBorderWidth 6
win.frame.smallCaptionButtonHeight 28
win.frame.smallCaptionButtonWidth 28
win.frame.smallCaptionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=19]
win.frame.smallCaptionFont.height 19
win.frame.smallCaptionHeight 28
win.frame.textColor java.awt.Color[r=0,g=0,b=0]
win.highContrast.on false
win.icon.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=19]
win.icon.font.height 19
win.icon.hspacing 143
win.icon.titleWrappingOn true
win.icon.vspacing 94
win.item.highlightColor java.awt.Color[r=0,g=120,b=215]
win.item.highlightTextColor java.awt.Color[r=255,g=255,b=255]
win.item.hotTrackedColor java.awt.Color[r=0,g=102,b=204]
win.item.hotTrackingOn true
win.mdi.backgroundColor java.awt.Color[r=171,g=171,b=171]
win.menu.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.menu.buttonWidth 24
win.menu.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=19]
win.menu.font.height 19
win.menu.height 28
win.menu.keyboardCuesOn false
win.menu.textColor java.awt.Color[r=0,g=0,b=0]
win.menubar.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.messagebox.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.messagebox.font.height 18
win.oemFixed.font java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18]
win.oemFixed.font.height 18
win.properties.version 3
win.scrollbar.backgroundColor java.awt.Color[r=200,g=200,b=200]
win.scrollbar.height 21
win.scrollbar.width 21
win.sound.asterisk WinPlaySound(SystemAsterisk)
win.sound.close WinPlaySound(Close)
win.sound.default WinPlaySound(.Default)
win.sound.exclamation WinPlaySound(SystemExclamation)
win.sound.exit WinPlaySound(SystemExit)
win.sound.hand WinPlaySound(SystemHand)
win.sound.maximize WinPlaySound(Maximize)
win.sound.menuCommand WinPlaySound(MenuCommand)
win.sound.menuPopup WinPlaySound(MenuPopup)
win.sound.minimize WinPlaySound(Minimize)
win.sound.open WinPlaySound(Open)
win.sound.question WinPlaySound(SystemQuestion)
win.sound.restoreDown WinPlaySound(RestoreDown)
win.sound.restoreUp WinPlaySound(RestoreUp)
win.sound.start WinPlaySound(SystemStart)
win.status.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=19]
win.status.font.height 19
win.system.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.system.font.height 16
win.systemFixed.font java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18]
win.systemFixed.font.height 18
win.text.fontSmoothingContrast 1200
win.text.fontSmoothingOn true
win.text.fontSmoothingOrientation 1
win.text.fontSmoothingType 2
win.text.grayedTextColor java.awt.Color[r=109,g=109,b=109]
win.tooltip.backgroundColor java.awt.Color[r=255,g=255,b=225]
win.tooltip.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=19]
win.tooltip.font.height 19
win.tooltip.textColor java.awt.Color[r=0,g=0,b=0]
win.xpstyle.colorName NormalColor
win.xpstyle.dllName C:\Windows\resources\themes\Aero\Aero.msstyles
win.xpstyle.sizeName NormalSize
win.xpstyle.themeActive true

View File

@@ -0,0 +1,120 @@
Java version: 1.8.0_202
OS: Windows 10
Screen scale: 1.25
Text scale: 1.5
Java scale: 1.0
Font scale: 2.0
DnD.gestureMotionThreshold 2
awt.dynamicLayoutSupported true
awt.file.showAttribCol false
awt.file.showHiddenFiles true
awt.font.desktophints {Text-specific antialiasing enable key=LCD HRGB antialiasing text mode, Text-specific LCD contrast key=120}
awt.mouse.numButtons 5
awt.multiClickInterval 500
awt.wheelMousePresent true
win.3d.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.3d.darkShadowColor java.awt.Color[r=105,g=105,b=105]
win.3d.highlightColor java.awt.Color[r=255,g=255,b=255]
win.3d.lightColor java.awt.Color[r=227,g=227,b=227]
win.3d.shadowColor java.awt.Color[r=160,g=160,b=160]
win.ansiFixed.font java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13]
win.ansiFixed.font.height 13
win.ansiVar.font java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11]
win.ansiVar.font.height 11
win.button.textColor java.awt.Color[r=0,g=0,b=0]
win.caret.width 1
win.defaultGUI.font java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=13]
win.defaultGUI.font.height 13
win.desktop.backgroundColor java.awt.Color[r=0,g=0,b=0]
win.deviceDefault.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.deviceDefault.font.height 16
win.drag.height 4
win.drag.width 4
win.frame.activeBorderColor java.awt.Color[r=180,g=180,b=180]
win.frame.activeCaptionColor java.awt.Color[r=153,g=180,b=209]
win.frame.activeCaptionGradientColor java.awt.Color[r=185,g=209,b=234]
win.frame.backgroundColor java.awt.Color[r=255,g=255,b=255]
win.frame.captionButtonHeight 34
win.frame.captionButtonWidth 56
win.frame.captionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=23]
win.frame.captionFont.height 23
win.frame.captionGradientsOn true
win.frame.captionHeight 34
win.frame.captionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.color java.awt.Color[r=100,g=100,b=100]
win.frame.fullWindowDragsOn true
win.frame.inactiveBorderColor java.awt.Color[r=244,g=247,b=252]
win.frame.inactiveCaptionColor java.awt.Color[r=191,g=205,b=219]
win.frame.inactiveCaptionGradientColor java.awt.Color[r=215,g=228,b=242]
win.frame.inactiveCaptionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.sizingBorderWidth 6
win.frame.smallCaptionButtonHeight 34
win.frame.smallCaptionButtonWidth 28
win.frame.smallCaptionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=23]
win.frame.smallCaptionFont.height 23
win.frame.smallCaptionHeight 34
win.frame.textColor java.awt.Color[r=0,g=0,b=0]
win.highContrast.on false
win.icon.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=23]
win.icon.font.height 23
win.icon.hspacing 143
win.icon.titleWrappingOn true
win.icon.vspacing 94
win.item.highlightColor java.awt.Color[r=0,g=120,b=215]
win.item.highlightTextColor java.awt.Color[r=255,g=255,b=255]
win.item.hotTrackedColor java.awt.Color[r=0,g=102,b=204]
win.item.hotTrackingOn true
win.mdi.backgroundColor java.awt.Color[r=171,g=171,b=171]
win.menu.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.menu.buttonWidth 24
win.menu.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=23]
win.menu.font.height 23
win.menu.height 34
win.menu.keyboardCuesOn false
win.menu.textColor java.awt.Color[r=0,g=0,b=0]
win.menubar.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.messagebox.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=23]
win.messagebox.font.height 23
win.oemFixed.font java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18]
win.oemFixed.font.height 18
win.properties.version 3
win.scrollbar.backgroundColor java.awt.Color[r=200,g=200,b=200]
win.scrollbar.height 21
win.scrollbar.width 21
win.sound.asterisk WinPlaySound(SystemAsterisk)
win.sound.close WinPlaySound(Close)
win.sound.default WinPlaySound(.Default)
win.sound.exclamation WinPlaySound(SystemExclamation)
win.sound.exit WinPlaySound(SystemExit)
win.sound.hand WinPlaySound(SystemHand)
win.sound.maximize WinPlaySound(Maximize)
win.sound.menuCommand WinPlaySound(MenuCommand)
win.sound.menuPopup WinPlaySound(MenuPopup)
win.sound.minimize WinPlaySound(Minimize)
win.sound.open WinPlaySound(Open)
win.sound.question WinPlaySound(SystemQuestion)
win.sound.restoreDown WinPlaySound(RestoreDown)
win.sound.restoreUp WinPlaySound(RestoreUp)
win.sound.start WinPlaySound(SystemStart)
win.status.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=23]
win.status.font.height 23
win.system.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.system.font.height 16
win.systemFixed.font java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18]
win.systemFixed.font.height 18
win.text.fontSmoothingContrast 1200
win.text.fontSmoothingOn true
win.text.fontSmoothingOrientation 1
win.text.fontSmoothingType 2
win.text.grayedTextColor java.awt.Color[r=109,g=109,b=109]
win.tooltip.backgroundColor java.awt.Color[r=255,g=255,b=225]
win.tooltip.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=23]
win.tooltip.font.height 23
win.tooltip.textColor java.awt.Color[r=0,g=0,b=0]
win.xpstyle.colorName NormalColor
win.xpstyle.dllName C:\Windows\resources\themes\Aero\Aero.msstyles
win.xpstyle.sizeName NormalSize
win.xpstyle.themeActive true

View File

@@ -0,0 +1,120 @@
Java version: 1.8.0_202
OS: Windows 10
Screen scale: 1.5
Text scale: 1.0
Java scale: 1.0
Font scale: 1.5
DnD.gestureMotionThreshold 2
awt.dynamicLayoutSupported true
awt.file.showAttribCol false
awt.file.showHiddenFiles true
awt.font.desktophints {Text-specific antialiasing enable key=LCD HRGB antialiasing text mode, Text-specific LCD contrast key=120}
awt.mouse.numButtons 5
awt.multiClickInterval 500
awt.wheelMousePresent true
win.3d.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.3d.darkShadowColor java.awt.Color[r=105,g=105,b=105]
win.3d.highlightColor java.awt.Color[r=255,g=255,b=255]
win.3d.lightColor java.awt.Color[r=227,g=227,b=227]
win.3d.shadowColor java.awt.Color[r=160,g=160,b=160]
win.ansiFixed.font java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13]
win.ansiFixed.font.height 13
win.ansiVar.font java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11]
win.ansiVar.font.height 11
win.button.textColor java.awt.Color[r=0,g=0,b=0]
win.caret.width 1
win.defaultGUI.font java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=16]
win.defaultGUI.font.height 16
win.desktop.backgroundColor java.awt.Color[r=0,g=0,b=0]
win.deviceDefault.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.deviceDefault.font.height 16
win.drag.height 4
win.drag.width 4
win.frame.activeBorderColor java.awt.Color[r=180,g=180,b=180]
win.frame.activeCaptionColor java.awt.Color[r=153,g=180,b=209]
win.frame.activeCaptionGradientColor java.awt.Color[r=185,g=209,b=234]
win.frame.backgroundColor java.awt.Color[r=255,g=255,b=255]
win.frame.captionButtonHeight 33
win.frame.captionButtonWidth 54
win.frame.captionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.frame.captionFont.height 18
win.frame.captionGradientsOn true
win.frame.captionHeight 33
win.frame.captionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.color java.awt.Color[r=100,g=100,b=100]
win.frame.fullWindowDragsOn true
win.frame.inactiveBorderColor java.awt.Color[r=244,g=247,b=252]
win.frame.inactiveCaptionColor java.awt.Color[r=191,g=205,b=219]
win.frame.inactiveCaptionGradientColor java.awt.Color[r=215,g=228,b=242]
win.frame.inactiveCaptionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.sizingBorderWidth 8
win.frame.smallCaptionButtonHeight 33
win.frame.smallCaptionButtonWidth 33
win.frame.smallCaptionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.frame.smallCaptionFont.height 18
win.frame.smallCaptionHeight 33
win.frame.textColor java.awt.Color[r=0,g=0,b=0]
win.highContrast.on false
win.icon.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.icon.font.height 18
win.icon.hspacing 171
win.icon.titleWrappingOn true
win.icon.vspacing 113
win.item.highlightColor java.awt.Color[r=0,g=120,b=215]
win.item.highlightTextColor java.awt.Color[r=255,g=255,b=255]
win.item.hotTrackedColor java.awt.Color[r=0,g=102,b=204]
win.item.hotTrackingOn true
win.mdi.backgroundColor java.awt.Color[r=171,g=171,b=171]
win.menu.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.menu.buttonWidth 29
win.menu.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.menu.font.height 18
win.menu.height 29
win.menu.keyboardCuesOn false
win.menu.textColor java.awt.Color[r=0,g=0,b=0]
win.menubar.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.messagebox.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.messagebox.font.height 18
win.oemFixed.font java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18]
win.oemFixed.font.height 18
win.properties.version 3
win.scrollbar.backgroundColor java.awt.Color[r=200,g=200,b=200]
win.scrollbar.height 26
win.scrollbar.width 26
win.sound.asterisk WinPlaySound(SystemAsterisk)
win.sound.close WinPlaySound(Close)
win.sound.default WinPlaySound(.Default)
win.sound.exclamation WinPlaySound(SystemExclamation)
win.sound.exit WinPlaySound(SystemExit)
win.sound.hand WinPlaySound(SystemHand)
win.sound.maximize WinPlaySound(Maximize)
win.sound.menuCommand WinPlaySound(MenuCommand)
win.sound.menuPopup WinPlaySound(MenuPopup)
win.sound.minimize WinPlaySound(Minimize)
win.sound.open WinPlaySound(Open)
win.sound.question WinPlaySound(SystemQuestion)
win.sound.restoreDown WinPlaySound(RestoreDown)
win.sound.restoreUp WinPlaySound(RestoreUp)
win.sound.start WinPlaySound(SystemStart)
win.status.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.status.font.height 18
win.system.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.system.font.height 16
win.systemFixed.font java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18]
win.systemFixed.font.height 18
win.text.fontSmoothingContrast 1200
win.text.fontSmoothingOn true
win.text.fontSmoothingOrientation 1
win.text.fontSmoothingType 2
win.text.grayedTextColor java.awt.Color[r=109,g=109,b=109]
win.tooltip.backgroundColor java.awt.Color[r=255,g=255,b=225]
win.tooltip.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.tooltip.font.height 18
win.tooltip.textColor java.awt.Color[r=0,g=0,b=0]
win.xpstyle.colorName NormalColor
win.xpstyle.dllName C:\Windows\resources\themes\Aero\Aero.msstyles
win.xpstyle.sizeName NormalSize
win.xpstyle.themeActive true

View File

@@ -0,0 +1,120 @@
Java version: 1.8.0_202
OS: Windows 10
Screen scale: 1.5
Text scale: 1.25
Java scale: 1.0
Font scale: 1.75
DnD.gestureMotionThreshold 2
awt.dynamicLayoutSupported true
awt.file.showAttribCol false
awt.file.showHiddenFiles true
awt.font.desktophints {Text-specific antialiasing enable key=LCD HRGB antialiasing text mode, Text-specific LCD contrast key=120}
awt.mouse.numButtons 5
awt.multiClickInterval 500
awt.wheelMousePresent true
win.3d.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.3d.darkShadowColor java.awt.Color[r=105,g=105,b=105]
win.3d.highlightColor java.awt.Color[r=255,g=255,b=255]
win.3d.lightColor java.awt.Color[r=227,g=227,b=227]
win.3d.shadowColor java.awt.Color[r=160,g=160,b=160]
win.ansiFixed.font java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13]
win.ansiFixed.font.height 13
win.ansiVar.font java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11]
win.ansiVar.font.height 11
win.button.textColor java.awt.Color[r=0,g=0,b=0]
win.caret.width 1
win.defaultGUI.font java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=16]
win.defaultGUI.font.height 16
win.desktop.backgroundColor java.awt.Color[r=0,g=0,b=0]
win.deviceDefault.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.deviceDefault.font.height 16
win.drag.height 4
win.drag.width 4
win.frame.activeBorderColor java.awt.Color[r=180,g=180,b=180]
win.frame.activeCaptionColor java.awt.Color[r=153,g=180,b=209]
win.frame.activeCaptionGradientColor java.awt.Color[r=185,g=209,b=234]
win.frame.backgroundColor java.awt.Color[r=255,g=255,b=255]
win.frame.captionButtonHeight 33
win.frame.captionButtonWidth 54
win.frame.captionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=22]
win.frame.captionFont.height 22
win.frame.captionGradientsOn true
win.frame.captionHeight 33
win.frame.captionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.color java.awt.Color[r=100,g=100,b=100]
win.frame.fullWindowDragsOn true
win.frame.inactiveBorderColor java.awt.Color[r=244,g=247,b=252]
win.frame.inactiveCaptionColor java.awt.Color[r=191,g=205,b=219]
win.frame.inactiveCaptionGradientColor java.awt.Color[r=215,g=228,b=242]
win.frame.inactiveCaptionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.sizingBorderWidth 8
win.frame.smallCaptionButtonHeight 33
win.frame.smallCaptionButtonWidth 33
win.frame.smallCaptionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=22]
win.frame.smallCaptionFont.height 22
win.frame.smallCaptionHeight 33
win.frame.textColor java.awt.Color[r=0,g=0,b=0]
win.highContrast.on false
win.icon.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=22]
win.icon.font.height 22
win.icon.hspacing 171
win.icon.titleWrappingOn true
win.icon.vspacing 113
win.item.highlightColor java.awt.Color[r=0,g=120,b=215]
win.item.highlightTextColor java.awt.Color[r=255,g=255,b=255]
win.item.hotTrackedColor java.awt.Color[r=0,g=102,b=204]
win.item.hotTrackingOn true
win.mdi.backgroundColor java.awt.Color[r=171,g=171,b=171]
win.menu.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.menu.buttonWidth 29
win.menu.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=22]
win.menu.font.height 22
win.menu.height 32
win.menu.keyboardCuesOn false
win.menu.textColor java.awt.Color[r=0,g=0,b=0]
win.menubar.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.messagebox.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=22]
win.messagebox.font.height 22
win.oemFixed.font java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18]
win.oemFixed.font.height 18
win.properties.version 3
win.scrollbar.backgroundColor java.awt.Color[r=200,g=200,b=200]
win.scrollbar.height 26
win.scrollbar.width 26
win.sound.asterisk WinPlaySound(SystemAsterisk)
win.sound.close WinPlaySound(Close)
win.sound.default WinPlaySound(.Default)
win.sound.exclamation WinPlaySound(SystemExclamation)
win.sound.exit WinPlaySound(SystemExit)
win.sound.hand WinPlaySound(SystemHand)
win.sound.maximize WinPlaySound(Maximize)
win.sound.menuCommand WinPlaySound(MenuCommand)
win.sound.menuPopup WinPlaySound(MenuPopup)
win.sound.minimize WinPlaySound(Minimize)
win.sound.open WinPlaySound(Open)
win.sound.question WinPlaySound(SystemQuestion)
win.sound.restoreDown WinPlaySound(RestoreDown)
win.sound.restoreUp WinPlaySound(RestoreUp)
win.sound.start WinPlaySound(SystemStart)
win.status.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=22]
win.status.font.height 22
win.system.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.system.font.height 16
win.systemFixed.font java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18]
win.systemFixed.font.height 18
win.text.fontSmoothingContrast 1200
win.text.fontSmoothingOn true
win.text.fontSmoothingOrientation 1
win.text.fontSmoothingType 2
win.text.grayedTextColor java.awt.Color[r=109,g=109,b=109]
win.tooltip.backgroundColor java.awt.Color[r=255,g=255,b=225]
win.tooltip.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=22]
win.tooltip.font.height 22
win.tooltip.textColor java.awt.Color[r=0,g=0,b=0]
win.xpstyle.colorName NormalColor
win.xpstyle.dllName C:\Windows\resources\themes\Aero\Aero.msstyles
win.xpstyle.sizeName NormalSize
win.xpstyle.themeActive true

View File

@@ -0,0 +1,120 @@
Java version: 1.8.0_202
OS: Windows 10
Screen scale: 1.5
Text scale: 1.5
Java scale: 1.0
Font scale: 2.25
DnD.gestureMotionThreshold 2
awt.dynamicLayoutSupported true
awt.file.showAttribCol false
awt.file.showHiddenFiles true
awt.font.desktophints {Text-specific antialiasing enable key=LCD HRGB antialiasing text mode, Text-specific LCD contrast key=120}
awt.mouse.numButtons 5
awt.multiClickInterval 500
awt.wheelMousePresent true
win.3d.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.3d.darkShadowColor java.awt.Color[r=105,g=105,b=105]
win.3d.highlightColor java.awt.Color[r=255,g=255,b=255]
win.3d.lightColor java.awt.Color[r=227,g=227,b=227]
win.3d.shadowColor java.awt.Color[r=160,g=160,b=160]
win.ansiFixed.font java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13]
win.ansiFixed.font.height 13
win.ansiVar.font java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11]
win.ansiVar.font.height 11
win.button.textColor java.awt.Color[r=0,g=0,b=0]
win.caret.width 1
win.defaultGUI.font java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=16]
win.defaultGUI.font.height 16
win.desktop.backgroundColor java.awt.Color[r=0,g=0,b=0]
win.deviceDefault.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.deviceDefault.font.height 16
win.drag.height 4
win.drag.width 4
win.frame.activeBorderColor java.awt.Color[r=180,g=180,b=180]
win.frame.activeCaptionColor java.awt.Color[r=153,g=180,b=209]
win.frame.activeCaptionGradientColor java.awt.Color[r=185,g=209,b=234]
win.frame.backgroundColor java.awt.Color[r=255,g=255,b=255]
win.frame.captionButtonHeight 39
win.frame.captionButtonWidth 64
win.frame.captionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=27]
win.frame.captionFont.height 27
win.frame.captionGradientsOn true
win.frame.captionHeight 39
win.frame.captionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.color java.awt.Color[r=100,g=100,b=100]
win.frame.fullWindowDragsOn true
win.frame.inactiveBorderColor java.awt.Color[r=244,g=247,b=252]
win.frame.inactiveCaptionColor java.awt.Color[r=191,g=205,b=219]
win.frame.inactiveCaptionGradientColor java.awt.Color[r=215,g=228,b=242]
win.frame.inactiveCaptionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.sizingBorderWidth 8
win.frame.smallCaptionButtonHeight 39
win.frame.smallCaptionButtonWidth 33
win.frame.smallCaptionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=27]
win.frame.smallCaptionFont.height 27
win.frame.smallCaptionHeight 39
win.frame.textColor java.awt.Color[r=0,g=0,b=0]
win.highContrast.on false
win.icon.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=27]
win.icon.font.height 27
win.icon.hspacing 171
win.icon.titleWrappingOn true
win.icon.vspacing 113
win.item.highlightColor java.awt.Color[r=0,g=120,b=215]
win.item.highlightTextColor java.awt.Color[r=255,g=255,b=255]
win.item.hotTrackedColor java.awt.Color[r=0,g=102,b=204]
win.item.hotTrackingOn true
win.mdi.backgroundColor java.awt.Color[r=171,g=171,b=171]
win.menu.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.menu.buttonWidth 29
win.menu.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=27]
win.menu.font.height 27
win.menu.height 39
win.menu.keyboardCuesOn false
win.menu.textColor java.awt.Color[r=0,g=0,b=0]
win.menubar.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.messagebox.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=27]
win.messagebox.font.height 27
win.oemFixed.font java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18]
win.oemFixed.font.height 18
win.properties.version 3
win.scrollbar.backgroundColor java.awt.Color[r=200,g=200,b=200]
win.scrollbar.height 26
win.scrollbar.width 26
win.sound.asterisk WinPlaySound(SystemAsterisk)
win.sound.close WinPlaySound(Close)
win.sound.default WinPlaySound(.Default)
win.sound.exclamation WinPlaySound(SystemExclamation)
win.sound.exit WinPlaySound(SystemExit)
win.sound.hand WinPlaySound(SystemHand)
win.sound.maximize WinPlaySound(Maximize)
win.sound.menuCommand WinPlaySound(MenuCommand)
win.sound.menuPopup WinPlaySound(MenuPopup)
win.sound.minimize WinPlaySound(Minimize)
win.sound.open WinPlaySound(Open)
win.sound.question WinPlaySound(SystemQuestion)
win.sound.restoreDown WinPlaySound(RestoreDown)
win.sound.restoreUp WinPlaySound(RestoreUp)
win.sound.start WinPlaySound(SystemStart)
win.status.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=27]
win.status.font.height 27
win.system.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.system.font.height 16
win.systemFixed.font java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18]
win.systemFixed.font.height 18
win.text.fontSmoothingContrast 1200
win.text.fontSmoothingOn true
win.text.fontSmoothingOrientation 1
win.text.fontSmoothingType 2
win.text.grayedTextColor java.awt.Color[r=109,g=109,b=109]
win.tooltip.backgroundColor java.awt.Color[r=255,g=255,b=225]
win.tooltip.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=27]
win.tooltip.font.height 27
win.tooltip.textColor java.awt.Color[r=0,g=0,b=0]
win.xpstyle.colorName NormalColor
win.xpstyle.dllName C:\Windows\resources\themes\Aero\Aero.msstyles
win.xpstyle.sizeName NormalSize
win.xpstyle.themeActive true

View File

@@ -0,0 +1,120 @@
Java version: 1.8.0_202
OS: Windows 10
Screen scale: 1.75
Text scale: 1.25
Java scale: 1.0
Font scale: 2.25
DnD.gestureMotionThreshold 2
awt.dynamicLayoutSupported true
awt.file.showAttribCol false
awt.file.showHiddenFiles true
awt.font.desktophints {Text-specific antialiasing enable key=LCD HRGB antialiasing text mode, Text-specific LCD contrast key=120}
awt.mouse.numButtons 5
awt.multiClickInterval 500
awt.wheelMousePresent true
win.3d.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.3d.darkShadowColor java.awt.Color[r=105,g=105,b=105]
win.3d.highlightColor java.awt.Color[r=255,g=255,b=255]
win.3d.lightColor java.awt.Color[r=227,g=227,b=227]
win.3d.shadowColor java.awt.Color[r=160,g=160,b=160]
win.ansiFixed.font java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13]
win.ansiFixed.font.height 13
win.ansiVar.font java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11]
win.ansiVar.font.height 11
win.button.textColor java.awt.Color[r=0,g=0,b=0]
win.caret.width 1
win.defaultGUI.font java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=19]
win.defaultGUI.font.height 19
win.desktop.backgroundColor java.awt.Color[r=0,g=0,b=0]
win.deviceDefault.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.deviceDefault.font.height 16
win.drag.height 4
win.drag.width 4
win.frame.activeBorderColor java.awt.Color[r=180,g=180,b=180]
win.frame.activeCaptionColor java.awt.Color[r=153,g=180,b=209]
win.frame.activeCaptionGradientColor java.awt.Color[r=185,g=209,b=234]
win.frame.backgroundColor java.awt.Color[r=255,g=255,b=255]
win.frame.captionButtonHeight 39
win.frame.captionButtonWidth 64
win.frame.captionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=26]
win.frame.captionFont.height 26
win.frame.captionGradientsOn true
win.frame.captionHeight 39
win.frame.captionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.color java.awt.Color[r=100,g=100,b=100]
win.frame.fullWindowDragsOn true
win.frame.inactiveBorderColor java.awt.Color[r=244,g=247,b=252]
win.frame.inactiveCaptionColor java.awt.Color[r=191,g=205,b=219]
win.frame.inactiveCaptionGradientColor java.awt.Color[r=215,g=228,b=242]
win.frame.inactiveCaptionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.sizingBorderWidth 9
win.frame.smallCaptionButtonHeight 39
win.frame.smallCaptionButtonWidth 39
win.frame.smallCaptionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=26]
win.frame.smallCaptionFont.height 26
win.frame.smallCaptionHeight 39
win.frame.textColor java.awt.Color[r=0,g=0,b=0]
win.highContrast.on false
win.icon.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=26]
win.icon.font.height 26
win.icon.hspacing 200
win.icon.titleWrappingOn true
win.icon.vspacing 131
win.item.highlightColor java.awt.Color[r=0,g=120,b=215]
win.item.highlightTextColor java.awt.Color[r=255,g=255,b=255]
win.item.hotTrackedColor java.awt.Color[r=0,g=102,b=204]
win.item.hotTrackingOn true
win.mdi.backgroundColor java.awt.Color[r=171,g=171,b=171]
win.menu.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.menu.buttonWidth 33
win.menu.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=26]
win.menu.font.height 26
win.menu.height 39
win.menu.keyboardCuesOn false
win.menu.textColor java.awt.Color[r=0,g=0,b=0]
win.menubar.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.messagebox.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=26]
win.messagebox.font.height 26
win.oemFixed.font java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18]
win.oemFixed.font.height 18
win.properties.version 3
win.scrollbar.backgroundColor java.awt.Color[r=200,g=200,b=200]
win.scrollbar.height 30
win.scrollbar.width 30
win.sound.asterisk WinPlaySound(SystemAsterisk)
win.sound.close WinPlaySound(Close)
win.sound.default WinPlaySound(.Default)
win.sound.exclamation WinPlaySound(SystemExclamation)
win.sound.exit WinPlaySound(SystemExit)
win.sound.hand WinPlaySound(SystemHand)
win.sound.maximize WinPlaySound(Maximize)
win.sound.menuCommand WinPlaySound(MenuCommand)
win.sound.menuPopup WinPlaySound(MenuPopup)
win.sound.minimize WinPlaySound(Minimize)
win.sound.open WinPlaySound(Open)
win.sound.question WinPlaySound(SystemQuestion)
win.sound.restoreDown WinPlaySound(RestoreDown)
win.sound.restoreUp WinPlaySound(RestoreUp)
win.sound.start WinPlaySound(SystemStart)
win.status.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=26]
win.status.font.height 26
win.system.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.system.font.height 16
win.systemFixed.font java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18]
win.systemFixed.font.height 18
win.text.fontSmoothingContrast 1200
win.text.fontSmoothingOn true
win.text.fontSmoothingOrientation 1
win.text.fontSmoothingType 2
win.text.grayedTextColor java.awt.Color[r=109,g=109,b=109]
win.tooltip.backgroundColor java.awt.Color[r=255,g=255,b=225]
win.tooltip.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=26]
win.tooltip.font.height 26
win.tooltip.textColor java.awt.Color[r=0,g=0,b=0]
win.xpstyle.colorName NormalColor
win.xpstyle.dllName C:\Windows\resources\themes\Aero\Aero.msstyles
win.xpstyle.sizeName NormalSize
win.xpstyle.themeActive true

View File

@@ -0,0 +1,120 @@
Java version: 1.8.0_202
OS: Windows 10
Screen scale: 1.75
Text scale: 1.5
Java scale: 1.0
Font scale: 2.75
DnD.gestureMotionThreshold 2
awt.dynamicLayoutSupported true
awt.file.showAttribCol false
awt.file.showHiddenFiles true
awt.font.desktophints {Text-specific antialiasing enable key=LCD HRGB antialiasing text mode, Text-specific LCD contrast key=120}
awt.mouse.numButtons 5
awt.multiClickInterval 500
awt.wheelMousePresent true
win.3d.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.3d.darkShadowColor java.awt.Color[r=105,g=105,b=105]
win.3d.highlightColor java.awt.Color[r=255,g=255,b=255]
win.3d.lightColor java.awt.Color[r=227,g=227,b=227]
win.3d.shadowColor java.awt.Color[r=160,g=160,b=160]
win.ansiFixed.font java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13]
win.ansiFixed.font.height 13
win.ansiVar.font java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11]
win.ansiVar.font.height 11
win.button.textColor java.awt.Color[r=0,g=0,b=0]
win.caret.width 1
win.defaultGUI.font java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=19]
win.defaultGUI.font.height 19
win.desktop.backgroundColor java.awt.Color[r=0,g=0,b=0]
win.deviceDefault.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.deviceDefault.font.height 16
win.drag.height 4
win.drag.width 4
win.frame.activeBorderColor java.awt.Color[r=180,g=180,b=180]
win.frame.activeCaptionColor java.awt.Color[r=153,g=180,b=209]
win.frame.activeCaptionGradientColor java.awt.Color[r=185,g=209,b=234]
win.frame.backgroundColor java.awt.Color[r=255,g=255,b=255]
win.frame.captionButtonHeight 47
win.frame.captionButtonWidth 77
win.frame.captionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=32]
win.frame.captionFont.height 32
win.frame.captionGradientsOn true
win.frame.captionHeight 47
win.frame.captionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.color java.awt.Color[r=100,g=100,b=100]
win.frame.fullWindowDragsOn true
win.frame.inactiveBorderColor java.awt.Color[r=244,g=247,b=252]
win.frame.inactiveCaptionColor java.awt.Color[r=191,g=205,b=219]
win.frame.inactiveCaptionGradientColor java.awt.Color[r=215,g=228,b=242]
win.frame.inactiveCaptionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.sizingBorderWidth 9
win.frame.smallCaptionButtonHeight 47
win.frame.smallCaptionButtonWidth 39
win.frame.smallCaptionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=32]
win.frame.smallCaptionFont.height 32
win.frame.smallCaptionHeight 47
win.frame.textColor java.awt.Color[r=0,g=0,b=0]
win.highContrast.on false
win.icon.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=32]
win.icon.font.height 32
win.icon.hspacing 200
win.icon.titleWrappingOn true
win.icon.vspacing 131
win.item.highlightColor java.awt.Color[r=0,g=120,b=215]
win.item.highlightTextColor java.awt.Color[r=255,g=255,b=255]
win.item.hotTrackedColor java.awt.Color[r=0,g=102,b=204]
win.item.hotTrackingOn true
win.mdi.backgroundColor java.awt.Color[r=171,g=171,b=171]
win.menu.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.menu.buttonWidth 33
win.menu.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=32]
win.menu.font.height 32
win.menu.height 47
win.menu.keyboardCuesOn false
win.menu.textColor java.awt.Color[r=0,g=0,b=0]
win.menubar.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.messagebox.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=32]
win.messagebox.font.height 32
win.oemFixed.font java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18]
win.oemFixed.font.height 18
win.properties.version 3
win.scrollbar.backgroundColor java.awt.Color[r=200,g=200,b=200]
win.scrollbar.height 30
win.scrollbar.width 30
win.sound.asterisk WinPlaySound(SystemAsterisk)
win.sound.close WinPlaySound(Close)
win.sound.default WinPlaySound(.Default)
win.sound.exclamation WinPlaySound(SystemExclamation)
win.sound.exit WinPlaySound(SystemExit)
win.sound.hand WinPlaySound(SystemHand)
win.sound.maximize WinPlaySound(Maximize)
win.sound.menuCommand WinPlaySound(MenuCommand)
win.sound.menuPopup WinPlaySound(MenuPopup)
win.sound.minimize WinPlaySound(Minimize)
win.sound.open WinPlaySound(Open)
win.sound.question WinPlaySound(SystemQuestion)
win.sound.restoreDown WinPlaySound(RestoreDown)
win.sound.restoreUp WinPlaySound(RestoreUp)
win.sound.start WinPlaySound(SystemStart)
win.status.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=32]
win.status.font.height 32
win.system.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.system.font.height 16
win.systemFixed.font java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18]
win.systemFixed.font.height 18
win.text.fontSmoothingContrast 1200
win.text.fontSmoothingOn true
win.text.fontSmoothingOrientation 1
win.text.fontSmoothingType 2
win.text.grayedTextColor java.awt.Color[r=109,g=109,b=109]
win.tooltip.backgroundColor java.awt.Color[r=255,g=255,b=225]
win.tooltip.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=32]
win.tooltip.font.height 32
win.tooltip.textColor java.awt.Color[r=0,g=0,b=0]
win.xpstyle.colorName NormalColor
win.xpstyle.dllName C:\Windows\resources\themes\Aero\Aero.msstyles
win.xpstyle.sizeName NormalSize
win.xpstyle.themeActive true

View File

@@ -0,0 +1,120 @@
Java version: 1.8.0_202
OS: Windows 10
Screen scale: 2.0
Text scale: 1.0
Java scale: 1.0
Font scale: 2.0
DnD.gestureMotionThreshold 2
awt.dynamicLayoutSupported true
awt.file.showAttribCol false
awt.file.showHiddenFiles true
awt.font.desktophints {Text-specific antialiasing enable key=LCD HRGB antialiasing text mode, Text-specific LCD contrast key=120}
awt.mouse.numButtons 5
awt.multiClickInterval 500
awt.wheelMousePresent true
win.3d.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.3d.darkShadowColor java.awt.Color[r=105,g=105,b=105]
win.3d.highlightColor java.awt.Color[r=255,g=255,b=255]
win.3d.lightColor java.awt.Color[r=227,g=227,b=227]
win.3d.shadowColor java.awt.Color[r=160,g=160,b=160]
win.ansiFixed.font java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13]
win.ansiFixed.font.height 13
win.ansiVar.font java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11]
win.ansiVar.font.height 11
win.button.textColor java.awt.Color[r=0,g=0,b=0]
win.caret.width 1
win.defaultGUI.font java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=21]
win.defaultGUI.font.height 21
win.desktop.backgroundColor java.awt.Color[r=0,g=0,b=0]
win.deviceDefault.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.deviceDefault.font.height 16
win.drag.height 4
win.drag.width 4
win.frame.activeBorderColor java.awt.Color[r=180,g=180,b=180]
win.frame.activeCaptionColor java.awt.Color[r=153,g=180,b=209]
win.frame.activeCaptionGradientColor java.awt.Color[r=185,g=209,b=234]
win.frame.backgroundColor java.awt.Color[r=255,g=255,b=255]
win.frame.captionButtonHeight 44
win.frame.captionButtonWidth 72
win.frame.captionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=24]
win.frame.captionFont.height 24
win.frame.captionGradientsOn true
win.frame.captionHeight 44
win.frame.captionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.color java.awt.Color[r=100,g=100,b=100]
win.frame.fullWindowDragsOn true
win.frame.inactiveBorderColor java.awt.Color[r=244,g=247,b=252]
win.frame.inactiveCaptionColor java.awt.Color[r=191,g=205,b=219]
win.frame.inactiveCaptionGradientColor java.awt.Color[r=215,g=228,b=242]
win.frame.inactiveCaptionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.sizingBorderWidth 10
win.frame.smallCaptionButtonHeight 44
win.frame.smallCaptionButtonWidth 44
win.frame.smallCaptionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=24]
win.frame.smallCaptionFont.height 24
win.frame.smallCaptionHeight 44
win.frame.textColor java.awt.Color[r=0,g=0,b=0]
win.highContrast.on false
win.icon.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=24]
win.icon.font.height 24
win.icon.hspacing 228
win.icon.titleWrappingOn true
win.icon.vspacing 150
win.item.highlightColor java.awt.Color[r=0,g=120,b=215]
win.item.highlightTextColor java.awt.Color[r=255,g=255,b=255]
win.item.hotTrackedColor java.awt.Color[r=0,g=102,b=204]
win.item.hotTrackingOn true
win.mdi.backgroundColor java.awt.Color[r=171,g=171,b=171]
win.menu.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.menu.buttonWidth 38
win.menu.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=24]
win.menu.font.height 24
win.menu.height 38
win.menu.keyboardCuesOn false
win.menu.textColor java.awt.Color[r=0,g=0,b=0]
win.menubar.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.messagebox.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=24]
win.messagebox.font.height 24
win.oemFixed.font java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18]
win.oemFixed.font.height 18
win.properties.version 3
win.scrollbar.backgroundColor java.awt.Color[r=200,g=200,b=200]
win.scrollbar.height 34
win.scrollbar.width 34
win.sound.asterisk WinPlaySound(SystemAsterisk)
win.sound.close WinPlaySound(Close)
win.sound.default WinPlaySound(.Default)
win.sound.exclamation WinPlaySound(SystemExclamation)
win.sound.exit WinPlaySound(SystemExit)
win.sound.hand WinPlaySound(SystemHand)
win.sound.maximize WinPlaySound(Maximize)
win.sound.menuCommand WinPlaySound(MenuCommand)
win.sound.menuPopup WinPlaySound(MenuPopup)
win.sound.minimize WinPlaySound(Minimize)
win.sound.open WinPlaySound(Open)
win.sound.question WinPlaySound(SystemQuestion)
win.sound.restoreDown WinPlaySound(RestoreDown)
win.sound.restoreUp WinPlaySound(RestoreUp)
win.sound.start WinPlaySound(SystemStart)
win.status.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=24]
win.status.font.height 24
win.system.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.system.font.height 16
win.systemFixed.font java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18]
win.systemFixed.font.height 18
win.text.fontSmoothingContrast 1200
win.text.fontSmoothingOn true
win.text.fontSmoothingOrientation 1
win.text.fontSmoothingType 2
win.text.grayedTextColor java.awt.Color[r=109,g=109,b=109]
win.tooltip.backgroundColor java.awt.Color[r=255,g=255,b=225]
win.tooltip.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=24]
win.tooltip.font.height 24
win.tooltip.textColor java.awt.Color[r=0,g=0,b=0]
win.xpstyle.colorName NormalColor
win.xpstyle.dllName C:\Windows\resources\themes\Aero\Aero.msstyles
win.xpstyle.sizeName NormalSize
win.xpstyle.themeActive true

View File

@@ -0,0 +1,120 @@
Java version: 1.8.0_202
OS: Windows 10
Screen scale: 2.0
Text scale: 1.25
Java scale: 1.0
Font scale: 2.5
DnD.gestureMotionThreshold 2
awt.dynamicLayoutSupported true
awt.file.showAttribCol false
awt.file.showHiddenFiles true
awt.font.desktophints {Text-specific antialiasing enable key=LCD HRGB antialiasing text mode, Text-specific LCD contrast key=120}
awt.mouse.numButtons 5
awt.multiClickInterval 500
awt.wheelMousePresent true
win.3d.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.3d.darkShadowColor java.awt.Color[r=105,g=105,b=105]
win.3d.highlightColor java.awt.Color[r=255,g=255,b=255]
win.3d.lightColor java.awt.Color[r=227,g=227,b=227]
win.3d.shadowColor java.awt.Color[r=160,g=160,b=160]
win.ansiFixed.font java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13]
win.ansiFixed.font.height 13
win.ansiVar.font java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11]
win.ansiVar.font.height 11
win.button.textColor java.awt.Color[r=0,g=0,b=0]
win.caret.width 1
win.defaultGUI.font java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=21]
win.defaultGUI.font.height 21
win.desktop.backgroundColor java.awt.Color[r=0,g=0,b=0]
win.deviceDefault.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.deviceDefault.font.height 16
win.drag.height 4
win.drag.width 4
win.frame.activeBorderColor java.awt.Color[r=180,g=180,b=180]
win.frame.activeCaptionColor java.awt.Color[r=153,g=180,b=209]
win.frame.activeCaptionGradientColor java.awt.Color[r=185,g=209,b=234]
win.frame.backgroundColor java.awt.Color[r=255,g=255,b=255]
win.frame.captionButtonHeight 44
win.frame.captionButtonWidth 72
win.frame.captionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=30]
win.frame.captionFont.height 30
win.frame.captionGradientsOn true
win.frame.captionHeight 44
win.frame.captionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.color java.awt.Color[r=100,g=100,b=100]
win.frame.fullWindowDragsOn true
win.frame.inactiveBorderColor java.awt.Color[r=244,g=247,b=252]
win.frame.inactiveCaptionColor java.awt.Color[r=191,g=205,b=219]
win.frame.inactiveCaptionGradientColor java.awt.Color[r=215,g=228,b=242]
win.frame.inactiveCaptionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.sizingBorderWidth 10
win.frame.smallCaptionButtonHeight 44
win.frame.smallCaptionButtonWidth 44
win.frame.smallCaptionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=30]
win.frame.smallCaptionFont.height 30
win.frame.smallCaptionHeight 44
win.frame.textColor java.awt.Color[r=0,g=0,b=0]
win.highContrast.on false
win.icon.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=30]
win.icon.font.height 30
win.icon.hspacing 228
win.icon.titleWrappingOn true
win.icon.vspacing 150
win.item.highlightColor java.awt.Color[r=0,g=120,b=215]
win.item.highlightTextColor java.awt.Color[r=255,g=255,b=255]
win.item.hotTrackedColor java.awt.Color[r=0,g=102,b=204]
win.item.hotTrackingOn true
win.mdi.backgroundColor java.awt.Color[r=171,g=171,b=171]
win.menu.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.menu.buttonWidth 38
win.menu.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=30]
win.menu.font.height 30
win.menu.height 44
win.menu.keyboardCuesOn false
win.menu.textColor java.awt.Color[r=0,g=0,b=0]
win.menubar.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.messagebox.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=29]
win.messagebox.font.height 29
win.oemFixed.font java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18]
win.oemFixed.font.height 18
win.properties.version 3
win.scrollbar.backgroundColor java.awt.Color[r=200,g=200,b=200]
win.scrollbar.height 34
win.scrollbar.width 34
win.sound.asterisk WinPlaySound(SystemAsterisk)
win.sound.close WinPlaySound(Close)
win.sound.default WinPlaySound(.Default)
win.sound.exclamation WinPlaySound(SystemExclamation)
win.sound.exit WinPlaySound(SystemExit)
win.sound.hand WinPlaySound(SystemHand)
win.sound.maximize WinPlaySound(Maximize)
win.sound.menuCommand WinPlaySound(MenuCommand)
win.sound.menuPopup WinPlaySound(MenuPopup)
win.sound.minimize WinPlaySound(Minimize)
win.sound.open WinPlaySound(Open)
win.sound.question WinPlaySound(SystemQuestion)
win.sound.restoreDown WinPlaySound(RestoreDown)
win.sound.restoreUp WinPlaySound(RestoreUp)
win.sound.start WinPlaySound(SystemStart)
win.status.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=30]
win.status.font.height 30
win.system.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.system.font.height 16
win.systemFixed.font java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18]
win.systemFixed.font.height 18
win.text.fontSmoothingContrast 1200
win.text.fontSmoothingOn true
win.text.fontSmoothingOrientation 1
win.text.fontSmoothingType 2
win.text.grayedTextColor java.awt.Color[r=109,g=109,b=109]
win.tooltip.backgroundColor java.awt.Color[r=255,g=255,b=225]
win.tooltip.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=30]
win.tooltip.font.height 30
win.tooltip.textColor java.awt.Color[r=0,g=0,b=0]
win.xpstyle.colorName NormalColor
win.xpstyle.dllName C:\Windows\resources\themes\Aero\Aero.msstyles
win.xpstyle.sizeName NormalSize
win.xpstyle.themeActive true

View File

@@ -0,0 +1,120 @@
Java version: 1.8.0_202
OS: Windows 10
Screen scale: 2.0
Text scale: 1.5
Java scale: 1.0
Font scale: 3.0
DnD.gestureMotionThreshold 2
awt.dynamicLayoutSupported true
awt.file.showAttribCol false
awt.file.showHiddenFiles true
awt.font.desktophints {Text-specific antialiasing enable key=LCD HRGB antialiasing text mode, Text-specific LCD contrast key=120}
awt.mouse.numButtons 5
awt.multiClickInterval 500
awt.wheelMousePresent true
win.3d.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.3d.darkShadowColor java.awt.Color[r=105,g=105,b=105]
win.3d.highlightColor java.awt.Color[r=255,g=255,b=255]
win.3d.lightColor java.awt.Color[r=227,g=227,b=227]
win.3d.shadowColor java.awt.Color[r=160,g=160,b=160]
win.ansiFixed.font java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13]
win.ansiFixed.font.height 13
win.ansiVar.font java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11]
win.ansiVar.font.height 11
win.button.textColor java.awt.Color[r=0,g=0,b=0]
win.caret.width 1
win.defaultGUI.font java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=21]
win.defaultGUI.font.height 21
win.desktop.backgroundColor java.awt.Color[r=0,g=0,b=0]
win.deviceDefault.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.deviceDefault.font.height 16
win.drag.height 4
win.drag.width 4
win.frame.activeBorderColor java.awt.Color[r=180,g=180,b=180]
win.frame.activeCaptionColor java.awt.Color[r=153,g=180,b=209]
win.frame.activeCaptionGradientColor java.awt.Color[r=185,g=209,b=234]
win.frame.backgroundColor java.awt.Color[r=255,g=255,b=255]
win.frame.captionButtonHeight 54
win.frame.captionButtonWidth 89
win.frame.captionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=36]
win.frame.captionFont.height 36
win.frame.captionGradientsOn true
win.frame.captionHeight 54
win.frame.captionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.color java.awt.Color[r=100,g=100,b=100]
win.frame.fullWindowDragsOn true
win.frame.inactiveBorderColor java.awt.Color[r=244,g=247,b=252]
win.frame.inactiveCaptionColor java.awt.Color[r=191,g=205,b=219]
win.frame.inactiveCaptionGradientColor java.awt.Color[r=215,g=228,b=242]
win.frame.inactiveCaptionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.sizingBorderWidth 10
win.frame.smallCaptionButtonHeight 54
win.frame.smallCaptionButtonWidth 44
win.frame.smallCaptionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=36]
win.frame.smallCaptionFont.height 36
win.frame.smallCaptionHeight 54
win.frame.textColor java.awt.Color[r=0,g=0,b=0]
win.highContrast.on false
win.icon.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=36]
win.icon.font.height 36
win.icon.hspacing 228
win.icon.titleWrappingOn true
win.icon.vspacing 150
win.item.highlightColor java.awt.Color[r=0,g=120,b=215]
win.item.highlightTextColor java.awt.Color[r=255,g=255,b=255]
win.item.hotTrackedColor java.awt.Color[r=0,g=102,b=204]
win.item.hotTrackingOn true
win.mdi.backgroundColor java.awt.Color[r=171,g=171,b=171]
win.menu.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.menu.buttonWidth 38
win.menu.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=36]
win.menu.font.height 36
win.menu.height 54
win.menu.keyboardCuesOn false
win.menu.textColor java.awt.Color[r=0,g=0,b=0]
win.menubar.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.messagebox.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=36]
win.messagebox.font.height 36
win.oemFixed.font java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18]
win.oemFixed.font.height 18
win.properties.version 3
win.scrollbar.backgroundColor java.awt.Color[r=200,g=200,b=200]
win.scrollbar.height 34
win.scrollbar.width 34
win.sound.asterisk WinPlaySound(SystemAsterisk)
win.sound.close WinPlaySound(Close)
win.sound.default WinPlaySound(.Default)
win.sound.exclamation WinPlaySound(SystemExclamation)
win.sound.exit WinPlaySound(SystemExit)
win.sound.hand WinPlaySound(SystemHand)
win.sound.maximize WinPlaySound(Maximize)
win.sound.menuCommand WinPlaySound(MenuCommand)
win.sound.menuPopup WinPlaySound(MenuPopup)
win.sound.minimize WinPlaySound(Minimize)
win.sound.open WinPlaySound(Open)
win.sound.question WinPlaySound(SystemQuestion)
win.sound.restoreDown WinPlaySound(RestoreDown)
win.sound.restoreUp WinPlaySound(RestoreUp)
win.sound.start WinPlaySound(SystemStart)
win.status.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=36]
win.status.font.height 36
win.system.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.system.font.height 16
win.systemFixed.font java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18]
win.systemFixed.font.height 18
win.text.fontSmoothingContrast 1200
win.text.fontSmoothingOn true
win.text.fontSmoothingOrientation 1
win.text.fontSmoothingType 2
win.text.grayedTextColor java.awt.Color[r=109,g=109,b=109]
win.tooltip.backgroundColor java.awt.Color[r=255,g=255,b=225]
win.tooltip.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=36]
win.tooltip.font.height 36
win.tooltip.textColor java.awt.Color[r=0,g=0,b=0]
win.xpstyle.colorName NormalColor
win.xpstyle.dllName C:\Windows\resources\themes\Aero\Aero.msstyles
win.xpstyle.sizeName NormalSize
win.xpstyle.themeActive true

View File

@@ -0,0 +1,120 @@
Java version: 1.8.0_202
OS: Windows 10
Screen scale: 2.25
Text scale: 1.5
Java scale: 1.0
Font scale: 3.5
DnD.gestureMotionThreshold 2
awt.dynamicLayoutSupported true
awt.file.showAttribCol false
awt.file.showHiddenFiles true
awt.font.desktophints {Text-specific antialiasing enable key=LCD HRGB antialiasing text mode, Text-specific LCD contrast key=120}
awt.mouse.numButtons 5
awt.multiClickInterval 500
awt.wheelMousePresent true
win.3d.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.3d.darkShadowColor java.awt.Color[r=105,g=105,b=105]
win.3d.highlightColor java.awt.Color[r=255,g=255,b=255]
win.3d.lightColor java.awt.Color[r=227,g=227,b=227]
win.3d.shadowColor java.awt.Color[r=160,g=160,b=160]
win.ansiFixed.font java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13]
win.ansiFixed.font.height 13
win.ansiVar.font java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11]
win.ansiVar.font.height 11
win.button.textColor java.awt.Color[r=0,g=0,b=0]
win.caret.width 1
win.defaultGUI.font java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=24]
win.defaultGUI.font.height 24
win.desktop.backgroundColor java.awt.Color[r=0,g=0,b=0]
win.deviceDefault.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.deviceDefault.font.height 16
win.drag.height 4
win.drag.width 4
win.frame.activeBorderColor java.awt.Color[r=180,g=180,b=180]
win.frame.activeCaptionColor java.awt.Color[r=153,g=180,b=209]
win.frame.activeCaptionGradientColor java.awt.Color[r=185,g=209,b=234]
win.frame.backgroundColor java.awt.Color[r=255,g=255,b=255]
win.frame.captionButtonHeight 61
win.frame.captionButtonWidth 100
win.frame.captionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=41]
win.frame.captionFont.height 41
win.frame.captionGradientsOn true
win.frame.captionHeight 61
win.frame.captionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.color java.awt.Color[r=100,g=100,b=100]
win.frame.fullWindowDragsOn true
win.frame.inactiveBorderColor java.awt.Color[r=244,g=247,b=252]
win.frame.inactiveCaptionColor java.awt.Color[r=191,g=205,b=219]
win.frame.inactiveCaptionGradientColor java.awt.Color[r=215,g=228,b=242]
win.frame.inactiveCaptionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.sizingBorderWidth 11
win.frame.smallCaptionButtonHeight 61
win.frame.smallCaptionButtonWidth 50
win.frame.smallCaptionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=41]
win.frame.smallCaptionFont.height 41
win.frame.smallCaptionHeight 61
win.frame.textColor java.awt.Color[r=0,g=0,b=0]
win.highContrast.on false
win.icon.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=41]
win.icon.font.height 41
win.icon.hspacing 257
win.icon.titleWrappingOn true
win.icon.vspacing 169
win.item.highlightColor java.awt.Color[r=0,g=120,b=215]
win.item.highlightTextColor java.awt.Color[r=255,g=255,b=255]
win.item.hotTrackedColor java.awt.Color[r=0,g=102,b=204]
win.item.hotTrackingOn true
win.mdi.backgroundColor java.awt.Color[r=171,g=171,b=171]
win.menu.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.menu.buttonWidth 43
win.menu.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=41]
win.menu.font.height 41
win.menu.height 61
win.menu.keyboardCuesOn false
win.menu.textColor java.awt.Color[r=0,g=0,b=0]
win.menubar.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.messagebox.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=41]
win.messagebox.font.height 41
win.oemFixed.font java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18]
win.oemFixed.font.height 18
win.properties.version 3
win.scrollbar.backgroundColor java.awt.Color[r=200,g=200,b=200]
win.scrollbar.height 38
win.scrollbar.width 38
win.sound.asterisk WinPlaySound(SystemAsterisk)
win.sound.close WinPlaySound(Close)
win.sound.default WinPlaySound(.Default)
win.sound.exclamation WinPlaySound(SystemExclamation)
win.sound.exit WinPlaySound(SystemExit)
win.sound.hand WinPlaySound(SystemHand)
win.sound.maximize WinPlaySound(Maximize)
win.sound.menuCommand WinPlaySound(MenuCommand)
win.sound.menuPopup WinPlaySound(MenuPopup)
win.sound.minimize WinPlaySound(Minimize)
win.sound.open WinPlaySound(Open)
win.sound.question WinPlaySound(SystemQuestion)
win.sound.restoreDown WinPlaySound(RestoreDown)
win.sound.restoreUp WinPlaySound(RestoreUp)
win.sound.start WinPlaySound(SystemStart)
win.status.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=41]
win.status.font.height 41
win.system.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.system.font.height 16
win.systemFixed.font java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18]
win.systemFixed.font.height 18
win.text.fontSmoothingContrast 1200
win.text.fontSmoothingOn true
win.text.fontSmoothingOrientation 1
win.text.fontSmoothingType 2
win.text.grayedTextColor java.awt.Color[r=109,g=109,b=109]
win.tooltip.backgroundColor java.awt.Color[r=255,g=255,b=225]
win.tooltip.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=41]
win.tooltip.font.height 41
win.tooltip.textColor java.awt.Color[r=0,g=0,b=0]
win.xpstyle.colorName NormalColor
win.xpstyle.dllName C:\Windows\resources\themes\Aero\Aero.msstyles
win.xpstyle.sizeName NormalSize
win.xpstyle.themeActive true

View File

@@ -0,0 +1,120 @@
Java version: 1.8.0_202
OS: Windows 10
Screen scale: 3.0
Text scale: 1.25
Java scale: 1.0
Font scale: 3.75
DnD.gestureMotionThreshold 2
awt.dynamicLayoutSupported true
awt.file.showAttribCol false
awt.file.showHiddenFiles true
awt.font.desktophints {Text-specific antialiasing enable key=LCD HRGB antialiasing text mode, Text-specific LCD contrast key=120}
awt.mouse.numButtons 5
awt.multiClickInterval 500
awt.wheelMousePresent true
win.3d.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.3d.darkShadowColor java.awt.Color[r=105,g=105,b=105]
win.3d.highlightColor java.awt.Color[r=255,g=255,b=255]
win.3d.lightColor java.awt.Color[r=227,g=227,b=227]
win.3d.shadowColor java.awt.Color[r=160,g=160,b=160]
win.ansiFixed.font java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13]
win.ansiFixed.font.height 13
win.ansiVar.font java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11]
win.ansiVar.font.height 11
win.button.textColor java.awt.Color[r=0,g=0,b=0]
win.caret.width 1
win.defaultGUI.font java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=32]
win.defaultGUI.font.height 32
win.desktop.backgroundColor java.awt.Color[r=0,g=0,b=0]
win.deviceDefault.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.deviceDefault.font.height 16
win.drag.height 4
win.drag.width 4
win.frame.activeBorderColor java.awt.Color[r=180,g=180,b=180]
win.frame.activeCaptionColor java.awt.Color[r=153,g=180,b=209]
win.frame.activeCaptionGradientColor java.awt.Color[r=185,g=209,b=234]
win.frame.backgroundColor java.awt.Color[r=255,g=255,b=255]
win.frame.captionButtonHeight 66
win.frame.captionButtonWidth 109
win.frame.captionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=45]
win.frame.captionFont.height 45
win.frame.captionGradientsOn true
win.frame.captionHeight 66
win.frame.captionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.color java.awt.Color[r=100,g=100,b=100]
win.frame.fullWindowDragsOn true
win.frame.inactiveBorderColor java.awt.Color[r=244,g=247,b=252]
win.frame.inactiveCaptionColor java.awt.Color[r=191,g=205,b=219]
win.frame.inactiveCaptionGradientColor java.awt.Color[r=215,g=228,b=242]
win.frame.inactiveCaptionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.sizingBorderWidth 15
win.frame.smallCaptionButtonHeight 66
win.frame.smallCaptionButtonWidth 66
win.frame.smallCaptionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=45]
win.frame.smallCaptionFont.height 45
win.frame.smallCaptionHeight 66
win.frame.textColor java.awt.Color[r=0,g=0,b=0]
win.highContrast.on false
win.icon.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=45]
win.icon.font.height 45
win.icon.hspacing 342
win.icon.titleWrappingOn true
win.icon.vspacing 225
win.item.highlightColor java.awt.Color[r=0,g=120,b=215]
win.item.highlightTextColor java.awt.Color[r=255,g=255,b=255]
win.item.hotTrackedColor java.awt.Color[r=0,g=102,b=204]
win.item.hotTrackingOn true
win.mdi.backgroundColor java.awt.Color[r=171,g=171,b=171]
win.menu.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.menu.buttonWidth 57
win.menu.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=45]
win.menu.font.height 45
win.menu.height 66
win.menu.keyboardCuesOn false
win.menu.textColor java.awt.Color[r=0,g=0,b=0]
win.menubar.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.messagebox.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=44]
win.messagebox.font.height 44
win.oemFixed.font java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18]
win.oemFixed.font.height 18
win.properties.version 3
win.scrollbar.backgroundColor java.awt.Color[r=200,g=200,b=200]
win.scrollbar.height 51
win.scrollbar.width 51
win.sound.asterisk WinPlaySound(SystemAsterisk)
win.sound.close WinPlaySound(Close)
win.sound.default WinPlaySound(.Default)
win.sound.exclamation WinPlaySound(SystemExclamation)
win.sound.exit WinPlaySound(SystemExit)
win.sound.hand WinPlaySound(SystemHand)
win.sound.maximize WinPlaySound(Maximize)
win.sound.menuCommand WinPlaySound(MenuCommand)
win.sound.menuPopup WinPlaySound(MenuPopup)
win.sound.minimize WinPlaySound(Minimize)
win.sound.open WinPlaySound(Open)
win.sound.question WinPlaySound(SystemQuestion)
win.sound.restoreDown WinPlaySound(RestoreDown)
win.sound.restoreUp WinPlaySound(RestoreUp)
win.sound.start WinPlaySound(SystemStart)
win.status.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=45]
win.status.font.height 45
win.system.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.system.font.height 16
win.systemFixed.font java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18]
win.systemFixed.font.height 18
win.text.fontSmoothingContrast 1200
win.text.fontSmoothingOn true
win.text.fontSmoothingOrientation 1
win.text.fontSmoothingType 2
win.text.grayedTextColor java.awt.Color[r=109,g=109,b=109]
win.tooltip.backgroundColor java.awt.Color[r=255,g=255,b=225]
win.tooltip.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=45]
win.tooltip.font.height 45
win.tooltip.textColor java.awt.Color[r=0,g=0,b=0]
win.xpstyle.colorName NormalColor
win.xpstyle.dllName C:\Windows\resources\themes\Aero\Aero.msstyles
win.xpstyle.sizeName NormalSize
win.xpstyle.themeActive true

View File

@@ -0,0 +1,120 @@
Java version: 1.8.0_202
OS: Windows 10
Screen scale: 3.0
Text scale: 1.5
Java scale: 1.0
Font scale: 4.5
DnD.gestureMotionThreshold 2
awt.dynamicLayoutSupported true
awt.file.showAttribCol false
awt.file.showHiddenFiles true
awt.font.desktophints {Text-specific antialiasing enable key=LCD HRGB antialiasing text mode, Text-specific LCD contrast key=120}
awt.mouse.numButtons 5
awt.multiClickInterval 500
awt.wheelMousePresent true
win.3d.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.3d.darkShadowColor java.awt.Color[r=105,g=105,b=105]
win.3d.highlightColor java.awt.Color[r=255,g=255,b=255]
win.3d.lightColor java.awt.Color[r=227,g=227,b=227]
win.3d.shadowColor java.awt.Color[r=160,g=160,b=160]
win.ansiFixed.font java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13]
win.ansiFixed.font.height 13
win.ansiVar.font java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11]
win.ansiVar.font.height 11
win.button.textColor java.awt.Color[r=0,g=0,b=0]
win.caret.width 1
win.defaultGUI.font java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=32]
win.defaultGUI.font.height 32
win.desktop.backgroundColor java.awt.Color[r=0,g=0,b=0]
win.deviceDefault.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.deviceDefault.font.height 16
win.drag.height 4
win.drag.width 4
win.frame.activeBorderColor java.awt.Color[r=180,g=180,b=180]
win.frame.activeCaptionColor java.awt.Color[r=153,g=180,b=209]
win.frame.activeCaptionGradientColor java.awt.Color[r=185,g=209,b=234]
win.frame.backgroundColor java.awt.Color[r=255,g=255,b=255]
win.frame.captionButtonHeight 81
win.frame.captionButtonWidth 133
win.frame.captionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=54]
win.frame.captionFont.height 54
win.frame.captionGradientsOn true
win.frame.captionHeight 81
win.frame.captionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.color java.awt.Color[r=100,g=100,b=100]
win.frame.fullWindowDragsOn true
win.frame.inactiveBorderColor java.awt.Color[r=244,g=247,b=252]
win.frame.inactiveCaptionColor java.awt.Color[r=191,g=205,b=219]
win.frame.inactiveCaptionGradientColor java.awt.Color[r=215,g=228,b=242]
win.frame.inactiveCaptionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.sizingBorderWidth 15
win.frame.smallCaptionButtonHeight 81
win.frame.smallCaptionButtonWidth 66
win.frame.smallCaptionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=54]
win.frame.smallCaptionFont.height 54
win.frame.smallCaptionHeight 81
win.frame.textColor java.awt.Color[r=0,g=0,b=0]
win.highContrast.on false
win.icon.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=54]
win.icon.font.height 54
win.icon.hspacing 342
win.icon.titleWrappingOn true
win.icon.vspacing 225
win.item.highlightColor java.awt.Color[r=0,g=120,b=215]
win.item.highlightTextColor java.awt.Color[r=255,g=255,b=255]
win.item.hotTrackedColor java.awt.Color[r=0,g=102,b=204]
win.item.hotTrackingOn true
win.mdi.backgroundColor java.awt.Color[r=171,g=171,b=171]
win.menu.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.menu.buttonWidth 57
win.menu.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=54]
win.menu.font.height 54
win.menu.height 81
win.menu.keyboardCuesOn false
win.menu.textColor java.awt.Color[r=0,g=0,b=0]
win.menubar.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.messagebox.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=54]
win.messagebox.font.height 54
win.oemFixed.font java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18]
win.oemFixed.font.height 18
win.properties.version 3
win.scrollbar.backgroundColor java.awt.Color[r=200,g=200,b=200]
win.scrollbar.height 51
win.scrollbar.width 51
win.sound.asterisk WinPlaySound(SystemAsterisk)
win.sound.close WinPlaySound(Close)
win.sound.default WinPlaySound(.Default)
win.sound.exclamation WinPlaySound(SystemExclamation)
win.sound.exit WinPlaySound(SystemExit)
win.sound.hand WinPlaySound(SystemHand)
win.sound.maximize WinPlaySound(Maximize)
win.sound.menuCommand WinPlaySound(MenuCommand)
win.sound.menuPopup WinPlaySound(MenuPopup)
win.sound.minimize WinPlaySound(Minimize)
win.sound.open WinPlaySound(Open)
win.sound.question WinPlaySound(SystemQuestion)
win.sound.restoreDown WinPlaySound(RestoreDown)
win.sound.restoreUp WinPlaySound(RestoreUp)
win.sound.start WinPlaySound(SystemStart)
win.status.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=54]
win.status.font.height 54
win.system.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.system.font.height 16
win.systemFixed.font java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18]
win.systemFixed.font.height 18
win.text.fontSmoothingContrast 1200
win.text.fontSmoothingOn true
win.text.fontSmoothingOrientation 1
win.text.fontSmoothingType 2
win.text.grayedTextColor java.awt.Color[r=109,g=109,b=109]
win.tooltip.backgroundColor java.awt.Color[r=255,g=255,b=225]
win.tooltip.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=54]
win.tooltip.font.height 54
win.tooltip.textColor java.awt.Color[r=0,g=0,b=0]
win.xpstyle.colorName NormalColor
win.xpstyle.dllName C:\Windows\resources\themes\Aero\Aero.msstyles
win.xpstyle.sizeName NormalSize
win.xpstyle.themeActive true

View File

@@ -0,0 +1,120 @@
Java version: 9.0.4
OS: Windows 10
Screen scale: 1.0
Text scale: 1.0
Java scale: 1.0
Font scale: 1.0
DnD.gestureMotionThreshold 2
awt.dynamicLayoutSupported true
awt.file.showAttribCol false
awt.file.showHiddenFiles true
awt.font.desktophints {Text-specific antialiasing enable key=LCD HRGB antialiasing text mode, Text-specific LCD contrast key=120}
awt.mouse.numButtons 5
awt.multiClickInterval 500
awt.wheelMousePresent true
win.3d.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.3d.darkShadowColor java.awt.Color[r=105,g=105,b=105]
win.3d.highlightColor java.awt.Color[r=255,g=255,b=255]
win.3d.lightColor java.awt.Color[r=227,g=227,b=227]
win.3d.shadowColor java.awt.Color[r=160,g=160,b=160]
win.ansiFixed.font java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13]
win.ansiFixed.font.height 13
win.ansiVar.font java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11]
win.ansiVar.font.height 11
win.button.textColor java.awt.Color[r=0,g=0,b=0]
win.caret.width 1
win.defaultGUI.font java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=16]
win.defaultGUI.font.height 16
win.desktop.backgroundColor java.awt.Color[r=0,g=0,b=0]
win.deviceDefault.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.deviceDefault.font.height 16
win.drag.height 4
win.drag.width 4
win.frame.activeBorderColor java.awt.Color[r=180,g=180,b=180]
win.frame.activeCaptionColor java.awt.Color[r=153,g=180,b=209]
win.frame.activeCaptionGradientColor java.awt.Color[r=185,g=209,b=234]
win.frame.backgroundColor java.awt.Color[r=255,g=255,b=255]
win.frame.captionButtonHeight 22
win.frame.captionButtonWidth 36
win.frame.captionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12]
win.frame.captionFont.height 12
win.frame.captionGradientsOn true
win.frame.captionHeight 22
win.frame.captionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.color java.awt.Color[r=100,g=100,b=100]
win.frame.fullWindowDragsOn true
win.frame.inactiveBorderColor java.awt.Color[r=244,g=247,b=252]
win.frame.inactiveCaptionColor java.awt.Color[r=191,g=205,b=219]
win.frame.inactiveCaptionGradientColor java.awt.Color[r=215,g=228,b=242]
win.frame.inactiveCaptionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.sizingBorderWidth 1
win.frame.smallCaptionButtonHeight 22
win.frame.smallCaptionButtonWidth 22
win.frame.smallCaptionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12]
win.frame.smallCaptionFont.height 12
win.frame.smallCaptionHeight 22
win.frame.textColor java.awt.Color[r=0,g=0,b=0]
win.highContrast.on false
win.icon.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12]
win.icon.font.height 12
win.icon.hspacing 114
win.icon.titleWrappingOn true
win.icon.vspacing 75
win.item.highlightColor java.awt.Color[r=0,g=120,b=215]
win.item.highlightTextColor java.awt.Color[r=255,g=255,b=255]
win.item.hotTrackedColor java.awt.Color[r=0,g=102,b=204]
win.item.hotTrackingOn true
win.mdi.backgroundColor java.awt.Color[r=171,g=171,b=171]
win.menu.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.menu.buttonWidth 19
win.menu.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12]
win.menu.font.height 12
win.menu.height 19
win.menu.keyboardCuesOn false
win.menu.textColor java.awt.Color[r=0,g=0,b=0]
win.menubar.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.messagebox.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12]
win.messagebox.font.height 12
win.oemFixed.font java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18]
win.oemFixed.font.height 18
win.properties.version 3
win.scrollbar.backgroundColor java.awt.Color[r=200,g=200,b=200]
win.scrollbar.height 17
win.scrollbar.width 17
win.sound.asterisk WinPlaySound(SystemAsterisk)
win.sound.close WinPlaySound(Close)
win.sound.default WinPlaySound(.Default)
win.sound.exclamation WinPlaySound(SystemExclamation)
win.sound.exit WinPlaySound(SystemExit)
win.sound.hand WinPlaySound(SystemHand)
win.sound.maximize WinPlaySound(Maximize)
win.sound.menuCommand WinPlaySound(MenuCommand)
win.sound.menuPopup WinPlaySound(MenuPopup)
win.sound.minimize WinPlaySound(Minimize)
win.sound.open WinPlaySound(Open)
win.sound.question WinPlaySound(SystemQuestion)
win.sound.restoreDown WinPlaySound(RestoreDown)
win.sound.restoreUp WinPlaySound(RestoreUp)
win.sound.start WinPlaySound(SystemStart)
win.status.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12]
win.status.font.height 12
win.system.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.system.font.height 16
win.systemFixed.font java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18]
win.systemFixed.font.height 18
win.text.fontSmoothingContrast 1200
win.text.fontSmoothingOn true
win.text.fontSmoothingOrientation 1
win.text.fontSmoothingType 2
win.text.grayedTextColor java.awt.Color[r=109,g=109,b=109]
win.tooltip.backgroundColor java.awt.Color[r=255,g=255,b=225]
win.tooltip.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12]
win.tooltip.font.height 12
win.tooltip.textColor java.awt.Color[r=0,g=0,b=0]
win.xpstyle.colorName NormalColor
win.xpstyle.dllName C:\Windows\resources\themes\Aero\Aero.msstyles
win.xpstyle.sizeName NormalSize
win.xpstyle.themeActive true

View File

@@ -0,0 +1,120 @@
Java version: 9.0.4
OS: Windows 10
Screen scale: 1.0
Text scale: 1.25
Java scale: 1.0
Font scale: 1.25
DnD.gestureMotionThreshold 2
awt.dynamicLayoutSupported true
awt.file.showAttribCol false
awt.file.showHiddenFiles true
awt.font.desktophints {Text-specific antialiasing enable key=LCD HRGB antialiasing text mode, Text-specific LCD contrast key=120}
awt.mouse.numButtons 5
awt.multiClickInterval 500
awt.wheelMousePresent true
win.3d.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.3d.darkShadowColor java.awt.Color[r=105,g=105,b=105]
win.3d.highlightColor java.awt.Color[r=255,g=255,b=255]
win.3d.lightColor java.awt.Color[r=227,g=227,b=227]
win.3d.shadowColor java.awt.Color[r=160,g=160,b=160]
win.ansiFixed.font java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13]
win.ansiFixed.font.height 13
win.ansiVar.font java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11]
win.ansiVar.font.height 11
win.button.textColor java.awt.Color[r=0,g=0,b=0]
win.caret.width 1
win.defaultGUI.font java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=16]
win.defaultGUI.font.height 16
win.desktop.backgroundColor java.awt.Color[r=0,g=0,b=0]
win.deviceDefault.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.deviceDefault.font.height 16
win.drag.height 4
win.drag.width 4
win.frame.activeBorderColor java.awt.Color[r=180,g=180,b=180]
win.frame.activeCaptionColor java.awt.Color[r=153,g=180,b=209]
win.frame.activeCaptionGradientColor java.awt.Color[r=185,g=209,b=234]
win.frame.backgroundColor java.awt.Color[r=255,g=255,b=255]
win.frame.captionButtonHeight 22
win.frame.captionButtonWidth 36
win.frame.captionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.frame.captionFont.height 15
win.frame.captionGradientsOn true
win.frame.captionHeight 22
win.frame.captionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.color java.awt.Color[r=100,g=100,b=100]
win.frame.fullWindowDragsOn true
win.frame.inactiveBorderColor java.awt.Color[r=244,g=247,b=252]
win.frame.inactiveCaptionColor java.awt.Color[r=191,g=205,b=219]
win.frame.inactiveCaptionGradientColor java.awt.Color[r=215,g=228,b=242]
win.frame.inactiveCaptionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.sizingBorderWidth 1
win.frame.smallCaptionButtonHeight 22
win.frame.smallCaptionButtonWidth 22
win.frame.smallCaptionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.frame.smallCaptionFont.height 15
win.frame.smallCaptionHeight 22
win.frame.textColor java.awt.Color[r=0,g=0,b=0]
win.highContrast.on false
win.icon.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.icon.font.height 15
win.icon.hspacing 114
win.icon.titleWrappingOn true
win.icon.vspacing 75
win.item.highlightColor java.awt.Color[r=0,g=120,b=215]
win.item.highlightTextColor java.awt.Color[r=255,g=255,b=255]
win.item.hotTrackedColor java.awt.Color[r=0,g=102,b=204]
win.item.hotTrackingOn true
win.mdi.backgroundColor java.awt.Color[r=171,g=171,b=171]
win.menu.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.menu.buttonWidth 19
win.menu.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.menu.font.height 15
win.menu.height 22
win.menu.keyboardCuesOn false
win.menu.textColor java.awt.Color[r=0,g=0,b=0]
win.menubar.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.messagebox.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.messagebox.font.height 15
win.oemFixed.font java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18]
win.oemFixed.font.height 18
win.properties.version 3
win.scrollbar.backgroundColor java.awt.Color[r=200,g=200,b=200]
win.scrollbar.height 17
win.scrollbar.width 17
win.sound.asterisk WinPlaySound(SystemAsterisk)
win.sound.close WinPlaySound(Close)
win.sound.default WinPlaySound(.Default)
win.sound.exclamation WinPlaySound(SystemExclamation)
win.sound.exit WinPlaySound(SystemExit)
win.sound.hand WinPlaySound(SystemHand)
win.sound.maximize WinPlaySound(Maximize)
win.sound.menuCommand WinPlaySound(MenuCommand)
win.sound.menuPopup WinPlaySound(MenuPopup)
win.sound.minimize WinPlaySound(Minimize)
win.sound.open WinPlaySound(Open)
win.sound.question WinPlaySound(SystemQuestion)
win.sound.restoreDown WinPlaySound(RestoreDown)
win.sound.restoreUp WinPlaySound(RestoreUp)
win.sound.start WinPlaySound(SystemStart)
win.status.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.status.font.height 15
win.system.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.system.font.height 16
win.systemFixed.font java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18]
win.systemFixed.font.height 18
win.text.fontSmoothingContrast 1200
win.text.fontSmoothingOn true
win.text.fontSmoothingOrientation 1
win.text.fontSmoothingType 2
win.text.grayedTextColor java.awt.Color[r=109,g=109,b=109]
win.tooltip.backgroundColor java.awt.Color[r=255,g=255,b=225]
win.tooltip.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.tooltip.font.height 15
win.tooltip.textColor java.awt.Color[r=0,g=0,b=0]
win.xpstyle.colorName NormalColor
win.xpstyle.dllName C:\Windows\resources\themes\Aero\Aero.msstyles
win.xpstyle.sizeName NormalSize
win.xpstyle.themeActive true

View File

@@ -0,0 +1,120 @@
Java version: 9.0.4
OS: Windows 10
Screen scale: 1.0
Text scale: 1.5
Java scale: 1.0
Font scale: 1.5
DnD.gestureMotionThreshold 2
awt.dynamicLayoutSupported true
awt.file.showAttribCol false
awt.file.showHiddenFiles true
awt.font.desktophints {Text-specific antialiasing enable key=LCD HRGB antialiasing text mode, Text-specific LCD contrast key=120}
awt.mouse.numButtons 5
awt.multiClickInterval 500
awt.wheelMousePresent true
win.3d.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.3d.darkShadowColor java.awt.Color[r=105,g=105,b=105]
win.3d.highlightColor java.awt.Color[r=255,g=255,b=255]
win.3d.lightColor java.awt.Color[r=227,g=227,b=227]
win.3d.shadowColor java.awt.Color[r=160,g=160,b=160]
win.ansiFixed.font java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13]
win.ansiFixed.font.height 13
win.ansiVar.font java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11]
win.ansiVar.font.height 11
win.button.textColor java.awt.Color[r=0,g=0,b=0]
win.caret.width 1
win.defaultGUI.font java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=16]
win.defaultGUI.font.height 16
win.desktop.backgroundColor java.awt.Color[r=0,g=0,b=0]
win.deviceDefault.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.deviceDefault.font.height 16
win.drag.height 4
win.drag.width 4
win.frame.activeBorderColor java.awt.Color[r=180,g=180,b=180]
win.frame.activeCaptionColor java.awt.Color[r=153,g=180,b=209]
win.frame.activeCaptionGradientColor java.awt.Color[r=185,g=209,b=234]
win.frame.backgroundColor java.awt.Color[r=255,g=255,b=255]
win.frame.captionButtonHeight 27
win.frame.captionButtonWidth 44
win.frame.captionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.frame.captionFont.height 18
win.frame.captionGradientsOn true
win.frame.captionHeight 27
win.frame.captionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.color java.awt.Color[r=100,g=100,b=100]
win.frame.fullWindowDragsOn true
win.frame.inactiveBorderColor java.awt.Color[r=244,g=247,b=252]
win.frame.inactiveCaptionColor java.awt.Color[r=191,g=205,b=219]
win.frame.inactiveCaptionGradientColor java.awt.Color[r=215,g=228,b=242]
win.frame.inactiveCaptionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.sizingBorderWidth 1
win.frame.smallCaptionButtonHeight 27
win.frame.smallCaptionButtonWidth 22
win.frame.smallCaptionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.frame.smallCaptionFont.height 18
win.frame.smallCaptionHeight 27
win.frame.textColor java.awt.Color[r=0,g=0,b=0]
win.highContrast.on false
win.icon.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.icon.font.height 18
win.icon.hspacing 114
win.icon.titleWrappingOn true
win.icon.vspacing 75
win.item.highlightColor java.awt.Color[r=0,g=120,b=215]
win.item.highlightTextColor java.awt.Color[r=255,g=255,b=255]
win.item.hotTrackedColor java.awt.Color[r=0,g=102,b=204]
win.item.hotTrackingOn true
win.mdi.backgroundColor java.awt.Color[r=171,g=171,b=171]
win.menu.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.menu.buttonWidth 19
win.menu.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.menu.font.height 18
win.menu.height 27
win.menu.keyboardCuesOn false
win.menu.textColor java.awt.Color[r=0,g=0,b=0]
win.menubar.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.messagebox.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.messagebox.font.height 18
win.oemFixed.font java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18]
win.oemFixed.font.height 18
win.properties.version 3
win.scrollbar.backgroundColor java.awt.Color[r=200,g=200,b=200]
win.scrollbar.height 17
win.scrollbar.width 17
win.sound.asterisk WinPlaySound(SystemAsterisk)
win.sound.close WinPlaySound(Close)
win.sound.default WinPlaySound(.Default)
win.sound.exclamation WinPlaySound(SystemExclamation)
win.sound.exit WinPlaySound(SystemExit)
win.sound.hand WinPlaySound(SystemHand)
win.sound.maximize WinPlaySound(Maximize)
win.sound.menuCommand WinPlaySound(MenuCommand)
win.sound.menuPopup WinPlaySound(MenuPopup)
win.sound.minimize WinPlaySound(Minimize)
win.sound.open WinPlaySound(Open)
win.sound.question WinPlaySound(SystemQuestion)
win.sound.restoreDown WinPlaySound(RestoreDown)
win.sound.restoreUp WinPlaySound(RestoreUp)
win.sound.start WinPlaySound(SystemStart)
win.status.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.status.font.height 18
win.system.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.system.font.height 16
win.systemFixed.font java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18]
win.systemFixed.font.height 18
win.text.fontSmoothingContrast 1200
win.text.fontSmoothingOn true
win.text.fontSmoothingOrientation 1
win.text.fontSmoothingType 2
win.text.grayedTextColor java.awt.Color[r=109,g=109,b=109]
win.tooltip.backgroundColor java.awt.Color[r=255,g=255,b=225]
win.tooltip.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.tooltip.font.height 18
win.tooltip.textColor java.awt.Color[r=0,g=0,b=0]
win.xpstyle.colorName NormalColor
win.xpstyle.dllName C:\Windows\resources\themes\Aero\Aero.msstyles
win.xpstyle.sizeName NormalSize
win.xpstyle.themeActive true

View File

@@ -0,0 +1,120 @@
Java version: 9.0.4
OS: Windows 10
Screen scale: 1.25
Text scale: 1.25
Java scale: 1.25
Font scale: 1.25
DnD.gestureMotionThreshold 2
awt.dynamicLayoutSupported true
awt.file.showAttribCol false
awt.file.showHiddenFiles true
awt.font.desktophints {Text-specific antialiasing enable key=LCD HRGB antialiasing text mode, Text-specific LCD contrast key=120}
awt.mouse.numButtons 5
awt.multiClickInterval 500
awt.wheelMousePresent true
win.3d.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.3d.darkShadowColor java.awt.Color[r=105,g=105,b=105]
win.3d.highlightColor java.awt.Color[r=255,g=255,b=255]
win.3d.lightColor java.awt.Color[r=227,g=227,b=227]
win.3d.shadowColor java.awt.Color[r=160,g=160,b=160]
win.ansiFixed.font java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13]
win.ansiFixed.font.height 13
win.ansiVar.font java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11]
win.ansiVar.font.height 11
win.button.textColor java.awt.Color[r=0,g=0,b=0]
win.caret.width 1
win.defaultGUI.font java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=13]
win.defaultGUI.font.height 13
win.desktop.backgroundColor java.awt.Color[r=0,g=0,b=0]
win.deviceDefault.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.deviceDefault.font.height 16
win.drag.height 4
win.drag.width 4
win.frame.activeBorderColor java.awt.Color[r=180,g=180,b=180]
win.frame.activeCaptionColor java.awt.Color[r=153,g=180,b=209]
win.frame.activeCaptionGradientColor java.awt.Color[r=185,g=209,b=234]
win.frame.backgroundColor java.awt.Color[r=255,g=255,b=255]
win.frame.captionButtonHeight 22
win.frame.captionButtonWidth 37
win.frame.captionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.frame.captionFont.height 15
win.frame.captionGradientsOn true
win.frame.captionHeight 22
win.frame.captionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.color java.awt.Color[r=100,g=100,b=100]
win.frame.fullWindowDragsOn true
win.frame.inactiveBorderColor java.awt.Color[r=244,g=247,b=252]
win.frame.inactiveCaptionColor java.awt.Color[r=191,g=205,b=219]
win.frame.inactiveCaptionGradientColor java.awt.Color[r=215,g=228,b=242]
win.frame.inactiveCaptionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.sizingBorderWidth 1
win.frame.smallCaptionButtonHeight 22
win.frame.smallCaptionButtonWidth 22
win.frame.smallCaptionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.frame.smallCaptionFont.height 15
win.frame.smallCaptionHeight 22
win.frame.textColor java.awt.Color[r=0,g=0,b=0]
win.highContrast.on false
win.icon.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.icon.font.height 15
win.icon.hspacing 114
win.icon.titleWrappingOn true
win.icon.vspacing 75
win.item.highlightColor java.awt.Color[r=0,g=120,b=215]
win.item.highlightTextColor java.awt.Color[r=255,g=255,b=255]
win.item.hotTrackedColor java.awt.Color[r=0,g=102,b=204]
win.item.hotTrackingOn true
win.mdi.backgroundColor java.awt.Color[r=171,g=171,b=171]
win.menu.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.menu.buttonWidth 19
win.menu.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.menu.font.height 15
win.menu.height 22
win.menu.keyboardCuesOn false
win.menu.textColor java.awt.Color[r=0,g=0,b=0]
win.menubar.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.messagebox.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=14]
win.messagebox.font.height 14
win.oemFixed.font java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18]
win.oemFixed.font.height 18
win.properties.version 3
win.scrollbar.backgroundColor java.awt.Color[r=200,g=200,b=200]
win.scrollbar.height 17
win.scrollbar.width 17
win.sound.asterisk WinPlaySound(SystemAsterisk)
win.sound.close WinPlaySound(Close)
win.sound.default WinPlaySound(.Default)
win.sound.exclamation WinPlaySound(SystemExclamation)
win.sound.exit WinPlaySound(SystemExit)
win.sound.hand WinPlaySound(SystemHand)
win.sound.maximize WinPlaySound(Maximize)
win.sound.menuCommand WinPlaySound(MenuCommand)
win.sound.menuPopup WinPlaySound(MenuPopup)
win.sound.minimize WinPlaySound(Minimize)
win.sound.open WinPlaySound(Open)
win.sound.question WinPlaySound(SystemQuestion)
win.sound.restoreDown WinPlaySound(RestoreDown)
win.sound.restoreUp WinPlaySound(RestoreUp)
win.sound.start WinPlaySound(SystemStart)
win.status.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.status.font.height 15
win.system.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.system.font.height 16
win.systemFixed.font java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18]
win.systemFixed.font.height 18
win.text.fontSmoothingContrast 1200
win.text.fontSmoothingOn true
win.text.fontSmoothingOrientation 1
win.text.fontSmoothingType 2
win.text.grayedTextColor java.awt.Color[r=109,g=109,b=109]
win.tooltip.backgroundColor java.awt.Color[r=255,g=255,b=225]
win.tooltip.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.tooltip.font.height 15
win.tooltip.textColor java.awt.Color[r=0,g=0,b=0]
win.xpstyle.colorName NormalColor
win.xpstyle.dllName C:\Windows\resources\themes\Aero\Aero.msstyles
win.xpstyle.sizeName NormalSize
win.xpstyle.themeActive true

View File

@@ -0,0 +1,120 @@
Java version: 9.0.4
OS: Windows 10
Screen scale: 1.25
Text scale: 1.5
Java scale: 1.25
Font scale: 1.5
DnD.gestureMotionThreshold 2
awt.dynamicLayoutSupported true
awt.file.showAttribCol false
awt.file.showHiddenFiles true
awt.font.desktophints {Text-specific antialiasing enable key=LCD HRGB antialiasing text mode, Text-specific LCD contrast key=120}
awt.mouse.numButtons 5
awt.multiClickInterval 500
awt.wheelMousePresent true
win.3d.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.3d.darkShadowColor java.awt.Color[r=105,g=105,b=105]
win.3d.highlightColor java.awt.Color[r=255,g=255,b=255]
win.3d.lightColor java.awt.Color[r=227,g=227,b=227]
win.3d.shadowColor java.awt.Color[r=160,g=160,b=160]
win.ansiFixed.font java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13]
win.ansiFixed.font.height 13
win.ansiVar.font java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11]
win.ansiVar.font.height 11
win.button.textColor java.awt.Color[r=0,g=0,b=0]
win.caret.width 1
win.defaultGUI.font java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=13]
win.defaultGUI.font.height 13
win.desktop.backgroundColor java.awt.Color[r=0,g=0,b=0]
win.deviceDefault.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.deviceDefault.font.height 16
win.drag.height 4
win.drag.width 4
win.frame.activeBorderColor java.awt.Color[r=180,g=180,b=180]
win.frame.activeCaptionColor java.awt.Color[r=153,g=180,b=209]
win.frame.activeCaptionGradientColor java.awt.Color[r=185,g=209,b=234]
win.frame.backgroundColor java.awt.Color[r=255,g=255,b=255]
win.frame.captionButtonHeight 27
win.frame.captionButtonWidth 45
win.frame.captionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.frame.captionFont.height 18
win.frame.captionGradientsOn true
win.frame.captionHeight 27
win.frame.captionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.color java.awt.Color[r=100,g=100,b=100]
win.frame.fullWindowDragsOn true
win.frame.inactiveBorderColor java.awt.Color[r=244,g=247,b=252]
win.frame.inactiveCaptionColor java.awt.Color[r=191,g=205,b=219]
win.frame.inactiveCaptionGradientColor java.awt.Color[r=215,g=228,b=242]
win.frame.inactiveCaptionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.sizingBorderWidth 1
win.frame.smallCaptionButtonHeight 27
win.frame.smallCaptionButtonWidth 22
win.frame.smallCaptionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.frame.smallCaptionFont.height 18
win.frame.smallCaptionHeight 27
win.frame.textColor java.awt.Color[r=0,g=0,b=0]
win.highContrast.on false
win.icon.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.icon.font.height 18
win.icon.hspacing 114
win.icon.titleWrappingOn true
win.icon.vspacing 75
win.item.highlightColor java.awt.Color[r=0,g=120,b=215]
win.item.highlightTextColor java.awt.Color[r=255,g=255,b=255]
win.item.hotTrackedColor java.awt.Color[r=0,g=102,b=204]
win.item.hotTrackingOn true
win.mdi.backgroundColor java.awt.Color[r=171,g=171,b=171]
win.menu.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.menu.buttonWidth 19
win.menu.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.menu.font.height 18
win.menu.height 27
win.menu.keyboardCuesOn false
win.menu.textColor java.awt.Color[r=0,g=0,b=0]
win.menubar.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.messagebox.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.messagebox.font.height 18
win.oemFixed.font java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18]
win.oemFixed.font.height 18
win.properties.version 3
win.scrollbar.backgroundColor java.awt.Color[r=200,g=200,b=200]
win.scrollbar.height 17
win.scrollbar.width 17
win.sound.asterisk WinPlaySound(SystemAsterisk)
win.sound.close WinPlaySound(Close)
win.sound.default WinPlaySound(.Default)
win.sound.exclamation WinPlaySound(SystemExclamation)
win.sound.exit WinPlaySound(SystemExit)
win.sound.hand WinPlaySound(SystemHand)
win.sound.maximize WinPlaySound(Maximize)
win.sound.menuCommand WinPlaySound(MenuCommand)
win.sound.menuPopup WinPlaySound(MenuPopup)
win.sound.minimize WinPlaySound(Minimize)
win.sound.open WinPlaySound(Open)
win.sound.question WinPlaySound(SystemQuestion)
win.sound.restoreDown WinPlaySound(RestoreDown)
win.sound.restoreUp WinPlaySound(RestoreUp)
win.sound.start WinPlaySound(SystemStart)
win.status.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.status.font.height 18
win.system.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.system.font.height 16
win.systemFixed.font java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18]
win.systemFixed.font.height 18
win.text.fontSmoothingContrast 1200
win.text.fontSmoothingOn true
win.text.fontSmoothingOrientation 1
win.text.fontSmoothingType 2
win.text.grayedTextColor java.awt.Color[r=109,g=109,b=109]
win.tooltip.backgroundColor java.awt.Color[r=255,g=255,b=225]
win.tooltip.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.tooltip.font.height 18
win.tooltip.textColor java.awt.Color[r=0,g=0,b=0]
win.xpstyle.colorName NormalColor
win.xpstyle.dllName C:\Windows\resources\themes\Aero\Aero.msstyles
win.xpstyle.sizeName NormalSize
win.xpstyle.themeActive true

View File

@@ -0,0 +1,120 @@
Java version: 9.0.4
OS: Windows 10
Screen scale: 1.5
Text scale: 1.0
Java scale: 1.5
Font scale: 1.0
DnD.gestureMotionThreshold 2
awt.dynamicLayoutSupported true
awt.file.showAttribCol false
awt.file.showHiddenFiles true
awt.font.desktophints {Text-specific antialiasing enable key=LCD HRGB antialiasing text mode, Text-specific LCD contrast key=120}
awt.mouse.numButtons 5
awt.multiClickInterval 500
awt.wheelMousePresent true
win.3d.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.3d.darkShadowColor java.awt.Color[r=105,g=105,b=105]
win.3d.highlightColor java.awt.Color[r=255,g=255,b=255]
win.3d.lightColor java.awt.Color[r=227,g=227,b=227]
win.3d.shadowColor java.awt.Color[r=160,g=160,b=160]
win.ansiFixed.font java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13]
win.ansiFixed.font.height 13
win.ansiVar.font java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11]
win.ansiVar.font.height 11
win.button.textColor java.awt.Color[r=0,g=0,b=0]
win.caret.width 1
win.defaultGUI.font java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=11]
win.defaultGUI.font.height 11
win.desktop.backgroundColor java.awt.Color[r=0,g=0,b=0]
win.deviceDefault.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.deviceDefault.font.height 16
win.drag.height 4
win.drag.width 4
win.frame.activeBorderColor java.awt.Color[r=180,g=180,b=180]
win.frame.activeCaptionColor java.awt.Color[r=153,g=180,b=209]
win.frame.activeCaptionGradientColor java.awt.Color[r=185,g=209,b=234]
win.frame.backgroundColor java.awt.Color[r=255,g=255,b=255]
win.frame.captionButtonHeight 22
win.frame.captionButtonWidth 36
win.frame.captionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12]
win.frame.captionFont.height 12
win.frame.captionGradientsOn true
win.frame.captionHeight 22
win.frame.captionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.color java.awt.Color[r=100,g=100,b=100]
win.frame.fullWindowDragsOn true
win.frame.inactiveBorderColor java.awt.Color[r=244,g=247,b=252]
win.frame.inactiveCaptionColor java.awt.Color[r=191,g=205,b=219]
win.frame.inactiveCaptionGradientColor java.awt.Color[r=215,g=228,b=242]
win.frame.inactiveCaptionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.sizingBorderWidth 1
win.frame.smallCaptionButtonHeight 22
win.frame.smallCaptionButtonWidth 22
win.frame.smallCaptionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12]
win.frame.smallCaptionFont.height 12
win.frame.smallCaptionHeight 22
win.frame.textColor java.awt.Color[r=0,g=0,b=0]
win.highContrast.on false
win.icon.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12]
win.icon.font.height 12
win.icon.hspacing 114
win.icon.titleWrappingOn true
win.icon.vspacing 75
win.item.highlightColor java.awt.Color[r=0,g=120,b=215]
win.item.highlightTextColor java.awt.Color[r=255,g=255,b=255]
win.item.hotTrackedColor java.awt.Color[r=0,g=102,b=204]
win.item.hotTrackingOn true
win.mdi.backgroundColor java.awt.Color[r=171,g=171,b=171]
win.menu.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.menu.buttonWidth 19
win.menu.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12]
win.menu.font.height 12
win.menu.height 19
win.menu.keyboardCuesOn false
win.menu.textColor java.awt.Color[r=0,g=0,b=0]
win.menubar.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.messagebox.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12]
win.messagebox.font.height 12
win.oemFixed.font java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18]
win.oemFixed.font.height 18
win.properties.version 3
win.scrollbar.backgroundColor java.awt.Color[r=200,g=200,b=200]
win.scrollbar.height 17
win.scrollbar.width 17
win.sound.asterisk WinPlaySound(SystemAsterisk)
win.sound.close WinPlaySound(Close)
win.sound.default WinPlaySound(.Default)
win.sound.exclamation WinPlaySound(SystemExclamation)
win.sound.exit WinPlaySound(SystemExit)
win.sound.hand WinPlaySound(SystemHand)
win.sound.maximize WinPlaySound(Maximize)
win.sound.menuCommand WinPlaySound(MenuCommand)
win.sound.menuPopup WinPlaySound(MenuPopup)
win.sound.minimize WinPlaySound(Minimize)
win.sound.open WinPlaySound(Open)
win.sound.question WinPlaySound(SystemQuestion)
win.sound.restoreDown WinPlaySound(RestoreDown)
win.sound.restoreUp WinPlaySound(RestoreUp)
win.sound.start WinPlaySound(SystemStart)
win.status.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12]
win.status.font.height 12
win.system.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.system.font.height 16
win.systemFixed.font java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18]
win.systemFixed.font.height 18
win.text.fontSmoothingContrast 1200
win.text.fontSmoothingOn true
win.text.fontSmoothingOrientation 1
win.text.fontSmoothingType 2
win.text.grayedTextColor java.awt.Color[r=109,g=109,b=109]
win.tooltip.backgroundColor java.awt.Color[r=255,g=255,b=225]
win.tooltip.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12]
win.tooltip.font.height 12
win.tooltip.textColor java.awt.Color[r=0,g=0,b=0]
win.xpstyle.colorName NormalColor
win.xpstyle.dllName C:\Windows\resources\themes\Aero\Aero.msstyles
win.xpstyle.sizeName NormalSize
win.xpstyle.themeActive true

View File

@@ -0,0 +1,120 @@
Java version: 9.0.4
OS: Windows 10
Screen scale: 1.5
Text scale: 1.25
Java scale: 1.5
Font scale: 1.25
DnD.gestureMotionThreshold 2
awt.dynamicLayoutSupported true
awt.file.showAttribCol false
awt.file.showHiddenFiles true
awt.font.desktophints {Text-specific antialiasing enable key=LCD HRGB antialiasing text mode, Text-specific LCD contrast key=120}
awt.mouse.numButtons 5
awt.multiClickInterval 500
awt.wheelMousePresent true
win.3d.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.3d.darkShadowColor java.awt.Color[r=105,g=105,b=105]
win.3d.highlightColor java.awt.Color[r=255,g=255,b=255]
win.3d.lightColor java.awt.Color[r=227,g=227,b=227]
win.3d.shadowColor java.awt.Color[r=160,g=160,b=160]
win.ansiFixed.font java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13]
win.ansiFixed.font.height 13
win.ansiVar.font java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11]
win.ansiVar.font.height 11
win.button.textColor java.awt.Color[r=0,g=0,b=0]
win.caret.width 1
win.defaultGUI.font java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=11]
win.defaultGUI.font.height 11
win.desktop.backgroundColor java.awt.Color[r=0,g=0,b=0]
win.deviceDefault.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.deviceDefault.font.height 16
win.drag.height 4
win.drag.width 4
win.frame.activeBorderColor java.awt.Color[r=180,g=180,b=180]
win.frame.activeCaptionColor java.awt.Color[r=153,g=180,b=209]
win.frame.activeCaptionGradientColor java.awt.Color[r=185,g=209,b=234]
win.frame.backgroundColor java.awt.Color[r=255,g=255,b=255]
win.frame.captionButtonHeight 22
win.frame.captionButtonWidth 36
win.frame.captionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.frame.captionFont.height 15
win.frame.captionGradientsOn true
win.frame.captionHeight 22
win.frame.captionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.color java.awt.Color[r=100,g=100,b=100]
win.frame.fullWindowDragsOn true
win.frame.inactiveBorderColor java.awt.Color[r=244,g=247,b=252]
win.frame.inactiveCaptionColor java.awt.Color[r=191,g=205,b=219]
win.frame.inactiveCaptionGradientColor java.awt.Color[r=215,g=228,b=242]
win.frame.inactiveCaptionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.sizingBorderWidth 1
win.frame.smallCaptionButtonHeight 22
win.frame.smallCaptionButtonWidth 22
win.frame.smallCaptionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.frame.smallCaptionFont.height 15
win.frame.smallCaptionHeight 22
win.frame.textColor java.awt.Color[r=0,g=0,b=0]
win.highContrast.on false
win.icon.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.icon.font.height 15
win.icon.hspacing 114
win.icon.titleWrappingOn true
win.icon.vspacing 75
win.item.highlightColor java.awt.Color[r=0,g=120,b=215]
win.item.highlightTextColor java.awt.Color[r=255,g=255,b=255]
win.item.hotTrackedColor java.awt.Color[r=0,g=102,b=204]
win.item.hotTrackingOn true
win.mdi.backgroundColor java.awt.Color[r=171,g=171,b=171]
win.menu.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.menu.buttonWidth 19
win.menu.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.menu.font.height 15
win.menu.height 21
win.menu.keyboardCuesOn false
win.menu.textColor java.awt.Color[r=0,g=0,b=0]
win.menubar.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.messagebox.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.messagebox.font.height 15
win.oemFixed.font java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18]
win.oemFixed.font.height 18
win.properties.version 3
win.scrollbar.backgroundColor java.awt.Color[r=200,g=200,b=200]
win.scrollbar.height 17
win.scrollbar.width 17
win.sound.asterisk WinPlaySound(SystemAsterisk)
win.sound.close WinPlaySound(Close)
win.sound.default WinPlaySound(.Default)
win.sound.exclamation WinPlaySound(SystemExclamation)
win.sound.exit WinPlaySound(SystemExit)
win.sound.hand WinPlaySound(SystemHand)
win.sound.maximize WinPlaySound(Maximize)
win.sound.menuCommand WinPlaySound(MenuCommand)
win.sound.menuPopup WinPlaySound(MenuPopup)
win.sound.minimize WinPlaySound(Minimize)
win.sound.open WinPlaySound(Open)
win.sound.question WinPlaySound(SystemQuestion)
win.sound.restoreDown WinPlaySound(RestoreDown)
win.sound.restoreUp WinPlaySound(RestoreUp)
win.sound.start WinPlaySound(SystemStart)
win.status.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.status.font.height 15
win.system.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.system.font.height 16
win.systemFixed.font java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18]
win.systemFixed.font.height 18
win.text.fontSmoothingContrast 1200
win.text.fontSmoothingOn true
win.text.fontSmoothingOrientation 1
win.text.fontSmoothingType 2
win.text.grayedTextColor java.awt.Color[r=109,g=109,b=109]
win.tooltip.backgroundColor java.awt.Color[r=255,g=255,b=225]
win.tooltip.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.tooltip.font.height 15
win.tooltip.textColor java.awt.Color[r=0,g=0,b=0]
win.xpstyle.colorName NormalColor
win.xpstyle.dllName C:\Windows\resources\themes\Aero\Aero.msstyles
win.xpstyle.sizeName NormalSize
win.xpstyle.themeActive true

View File

@@ -0,0 +1,120 @@
Java version: 9.0.4
OS: Windows 10
Screen scale: 1.5
Text scale: 1.5
Java scale: 1.5
Font scale: 1.5
DnD.gestureMotionThreshold 2
awt.dynamicLayoutSupported true
awt.file.showAttribCol false
awt.file.showHiddenFiles true
awt.font.desktophints {Text-specific antialiasing enable key=LCD HRGB antialiasing text mode, Text-specific LCD contrast key=120}
awt.mouse.numButtons 5
awt.multiClickInterval 500
awt.wheelMousePresent true
win.3d.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.3d.darkShadowColor java.awt.Color[r=105,g=105,b=105]
win.3d.highlightColor java.awt.Color[r=255,g=255,b=255]
win.3d.lightColor java.awt.Color[r=227,g=227,b=227]
win.3d.shadowColor java.awt.Color[r=160,g=160,b=160]
win.ansiFixed.font java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13]
win.ansiFixed.font.height 13
win.ansiVar.font java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11]
win.ansiVar.font.height 11
win.button.textColor java.awt.Color[r=0,g=0,b=0]
win.caret.width 1
win.defaultGUI.font java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=11]
win.defaultGUI.font.height 11
win.desktop.backgroundColor java.awt.Color[r=0,g=0,b=0]
win.deviceDefault.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.deviceDefault.font.height 16
win.drag.height 4
win.drag.width 4
win.frame.activeBorderColor java.awt.Color[r=180,g=180,b=180]
win.frame.activeCaptionColor java.awt.Color[r=153,g=180,b=209]
win.frame.activeCaptionGradientColor java.awt.Color[r=185,g=209,b=234]
win.frame.backgroundColor java.awt.Color[r=255,g=255,b=255]
win.frame.captionButtonHeight 26
win.frame.captionButtonWidth 43
win.frame.captionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.frame.captionFont.height 18
win.frame.captionGradientsOn true
win.frame.captionHeight 26
win.frame.captionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.color java.awt.Color[r=100,g=100,b=100]
win.frame.fullWindowDragsOn true
win.frame.inactiveBorderColor java.awt.Color[r=244,g=247,b=252]
win.frame.inactiveCaptionColor java.awt.Color[r=191,g=205,b=219]
win.frame.inactiveCaptionGradientColor java.awt.Color[r=215,g=228,b=242]
win.frame.inactiveCaptionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.sizingBorderWidth 1
win.frame.smallCaptionButtonHeight 26
win.frame.smallCaptionButtonWidth 22
win.frame.smallCaptionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.frame.smallCaptionFont.height 18
win.frame.smallCaptionHeight 26
win.frame.textColor java.awt.Color[r=0,g=0,b=0]
win.highContrast.on false
win.icon.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.icon.font.height 18
win.icon.hspacing 114
win.icon.titleWrappingOn true
win.icon.vspacing 75
win.item.highlightColor java.awt.Color[r=0,g=120,b=215]
win.item.highlightTextColor java.awt.Color[r=255,g=255,b=255]
win.item.hotTrackedColor java.awt.Color[r=0,g=102,b=204]
win.item.hotTrackingOn true
win.mdi.backgroundColor java.awt.Color[r=171,g=171,b=171]
win.menu.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.menu.buttonWidth 19
win.menu.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.menu.font.height 18
win.menu.height 26
win.menu.keyboardCuesOn false
win.menu.textColor java.awt.Color[r=0,g=0,b=0]
win.menubar.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.messagebox.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.messagebox.font.height 18
win.oemFixed.font java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18]
win.oemFixed.font.height 18
win.properties.version 3
win.scrollbar.backgroundColor java.awt.Color[r=200,g=200,b=200]
win.scrollbar.height 17
win.scrollbar.width 17
win.sound.asterisk WinPlaySound(SystemAsterisk)
win.sound.close WinPlaySound(Close)
win.sound.default WinPlaySound(.Default)
win.sound.exclamation WinPlaySound(SystemExclamation)
win.sound.exit WinPlaySound(SystemExit)
win.sound.hand WinPlaySound(SystemHand)
win.sound.maximize WinPlaySound(Maximize)
win.sound.menuCommand WinPlaySound(MenuCommand)
win.sound.menuPopup WinPlaySound(MenuPopup)
win.sound.minimize WinPlaySound(Minimize)
win.sound.open WinPlaySound(Open)
win.sound.question WinPlaySound(SystemQuestion)
win.sound.restoreDown WinPlaySound(RestoreDown)
win.sound.restoreUp WinPlaySound(RestoreUp)
win.sound.start WinPlaySound(SystemStart)
win.status.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.status.font.height 18
win.system.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.system.font.height 16
win.systemFixed.font java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18]
win.systemFixed.font.height 18
win.text.fontSmoothingContrast 1200
win.text.fontSmoothingOn true
win.text.fontSmoothingOrientation 1
win.text.fontSmoothingType 2
win.text.grayedTextColor java.awt.Color[r=109,g=109,b=109]
win.tooltip.backgroundColor java.awt.Color[r=255,g=255,b=225]
win.tooltip.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=18]
win.tooltip.font.height 18
win.tooltip.textColor java.awt.Color[r=0,g=0,b=0]
win.xpstyle.colorName NormalColor
win.xpstyle.dllName C:\Windows\resources\themes\Aero\Aero.msstyles
win.xpstyle.sizeName NormalSize
win.xpstyle.themeActive true

View File

@@ -0,0 +1,120 @@
Java version: 9.0.4
OS: Windows 10
Screen scale: 1.75
Text scale: 1.25
Java scale: 1.75
Font scale: 1.25
DnD.gestureMotionThreshold 2
awt.dynamicLayoutSupported true
awt.file.showAttribCol false
awt.file.showHiddenFiles true
awt.font.desktophints {Text-specific antialiasing enable key=LCD HRGB antialiasing text mode, Text-specific LCD contrast key=120}
awt.mouse.numButtons 5
awt.multiClickInterval 500
awt.wheelMousePresent true
win.3d.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.3d.darkShadowColor java.awt.Color[r=105,g=105,b=105]
win.3d.highlightColor java.awt.Color[r=255,g=255,b=255]
win.3d.lightColor java.awt.Color[r=227,g=227,b=227]
win.3d.shadowColor java.awt.Color[r=160,g=160,b=160]
win.ansiFixed.font java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13]
win.ansiFixed.font.height 13
win.ansiVar.font java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11]
win.ansiVar.font.height 11
win.button.textColor java.awt.Color[r=0,g=0,b=0]
win.caret.width 1
win.defaultGUI.font java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=9]
win.defaultGUI.font.height 9
win.desktop.backgroundColor java.awt.Color[r=0,g=0,b=0]
win.deviceDefault.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.deviceDefault.font.height 16
win.drag.height 4
win.drag.width 4
win.frame.activeBorderColor java.awt.Color[r=180,g=180,b=180]
win.frame.activeCaptionColor java.awt.Color[r=153,g=180,b=209]
win.frame.activeCaptionGradientColor java.awt.Color[r=185,g=209,b=234]
win.frame.backgroundColor java.awt.Color[r=255,g=255,b=255]
win.frame.captionButtonHeight 22
win.frame.captionButtonWidth 37
win.frame.captionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.frame.captionFont.height 15
win.frame.captionGradientsOn true
win.frame.captionHeight 22
win.frame.captionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.color java.awt.Color[r=100,g=100,b=100]
win.frame.fullWindowDragsOn true
win.frame.inactiveBorderColor java.awt.Color[r=244,g=247,b=252]
win.frame.inactiveCaptionColor java.awt.Color[r=191,g=205,b=219]
win.frame.inactiveCaptionGradientColor java.awt.Color[r=215,g=228,b=242]
win.frame.inactiveCaptionTextColor java.awt.Color[r=0,g=0,b=0]
win.frame.sizingBorderWidth 1
win.frame.smallCaptionButtonHeight 22
win.frame.smallCaptionButtonWidth 22
win.frame.smallCaptionFont java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.frame.smallCaptionFont.height 15
win.frame.smallCaptionHeight 22
win.frame.textColor java.awt.Color[r=0,g=0,b=0]
win.highContrast.on false
win.icon.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.icon.font.height 15
win.icon.hspacing 114
win.icon.titleWrappingOn true
win.icon.vspacing 75
win.item.highlightColor java.awt.Color[r=0,g=120,b=215]
win.item.highlightTextColor java.awt.Color[r=255,g=255,b=255]
win.item.hotTrackedColor java.awt.Color[r=0,g=102,b=204]
win.item.hotTrackingOn true
win.mdi.backgroundColor java.awt.Color[r=171,g=171,b=171]
win.menu.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.menu.buttonWidth 19
win.menu.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.menu.font.height 15
win.menu.height 22
win.menu.keyboardCuesOn false
win.menu.textColor java.awt.Color[r=0,g=0,b=0]
win.menubar.backgroundColor java.awt.Color[r=240,g=240,b=240]
win.messagebox.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.messagebox.font.height 15
win.oemFixed.font java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18]
win.oemFixed.font.height 18
win.properties.version 3
win.scrollbar.backgroundColor java.awt.Color[r=200,g=200,b=200]
win.scrollbar.height 17
win.scrollbar.width 17
win.sound.asterisk WinPlaySound(SystemAsterisk)
win.sound.close WinPlaySound(Close)
win.sound.default WinPlaySound(.Default)
win.sound.exclamation WinPlaySound(SystemExclamation)
win.sound.exit WinPlaySound(SystemExit)
win.sound.hand WinPlaySound(SystemHand)
win.sound.maximize WinPlaySound(Maximize)
win.sound.menuCommand WinPlaySound(MenuCommand)
win.sound.menuPopup WinPlaySound(MenuPopup)
win.sound.minimize WinPlaySound(Minimize)
win.sound.open WinPlaySound(Open)
win.sound.question WinPlaySound(SystemQuestion)
win.sound.restoreDown WinPlaySound(RestoreDown)
win.sound.restoreUp WinPlaySound(RestoreUp)
win.sound.start WinPlaySound(SystemStart)
win.status.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.status.font.height 15
win.system.font java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16]
win.system.font.height 16
win.systemFixed.font java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18]
win.systemFixed.font.height 18
win.text.fontSmoothingContrast 1200
win.text.fontSmoothingOn true
win.text.fontSmoothingOrientation 1
win.text.fontSmoothingType 2
win.text.grayedTextColor java.awt.Color[r=109,g=109,b=109]
win.tooltip.backgroundColor java.awt.Color[r=255,g=255,b=225]
win.tooltip.font java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15]
win.tooltip.font.height 15
win.tooltip.textColor java.awt.Color[r=0,g=0,b=0]
win.xpstyle.colorName NormalColor
win.xpstyle.dllName C:\Windows\resources\themes\Aero\Aero.msstyles
win.xpstyle.sizeName NormalSize
win.xpstyle.themeActive true

Some files were not shown because too many files have changed in this diff Show More