Demo: update scale factor in info label when moving window to another screen

This commit is contained in:
Karl Tauber
2019-10-03 14:49:11 +02:00
parent 23d448d4fc
commit 771c949d74
2 changed files with 25 additions and 7 deletions

View File

@@ -17,6 +17,8 @@
package com.formdev.flatlaf; package com.formdev.flatlaf;
import java.awt.*; import java.awt.*;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter; import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent; import java.awt.event.WindowEvent;
@@ -156,8 +158,12 @@ public class FlatTestFrame
public void windowOpened( WindowEvent e ) { public void windowOpened( WindowEvent e ) {
updateTitle(); updateTitle();
} }
} );
// update title when moved to another screen
addComponentListener( new ComponentAdapter() {
@Override @Override
public void windowActivated( WindowEvent e ) { public void componentMoved( ComponentEvent e ) {
updateTitle(); updateTitle();
} }
} ); } );
@@ -166,11 +172,14 @@ public class FlatTestFrame
private void updateTitle() { private void updateTitle() {
double systemScaleFactor = UIScale.getSystemScaleFactor( getGraphicsConfiguration() ); double systemScaleFactor = UIScale.getSystemScaleFactor( getGraphicsConfiguration() );
float userScaleFactor = UIScale.getUserScaleFactor(); float userScaleFactor = UIScale.getUserScaleFactor();
setTitle( title + " (Java " + System.getProperty( "java.version" ) String newTitle = title + " (Java " + System.getProperty( "java.version" )
+ (systemScaleFactor != 1 ? ("; system scale factor " + systemScaleFactor) : "") + (systemScaleFactor != 1 ? ("; system scale factor " + systemScaleFactor) : "")
+ (userScaleFactor != 1 ? ("; user scale factor " + userScaleFactor) : "") + (userScaleFactor != 1 ? ("; user scale factor " + userScaleFactor) : "")
+ (systemScaleFactor == 1 && userScaleFactor == 1 ? "; no scaling" : "") + (systemScaleFactor == 1 && userScaleFactor == 1 ? "; no scaling" : "")
+ ")" ); + ")";
if( !newTitle.equals( getTitle() ) )
setTitle( newTitle );
} }
private void registerSwitchToLookAndFeel( int keyCode, String lafClassName ) { private void registerSwitchToLookAndFeel( int keyCode, String lafClassName ) {

View File

@@ -17,6 +17,8 @@
package com.formdev.flatlaf.demo; package com.formdev.flatlaf.demo;
import java.awt.*; import java.awt.*;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter; import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent; import java.awt.event.WindowEvent;
@@ -106,15 +108,19 @@ class ControlBar
// make the "close" button the default button // make the "close" button the default button
frame.getRootPane().setDefaultButton( closeButton ); frame.getRootPane().setDefaultButton( closeButton );
// move focus to "close" button // update info label and move focus to "close" button
frame.addWindowListener( new WindowAdapter() { frame.addWindowListener( new WindowAdapter() {
@Override @Override
public void windowOpened( WindowEvent e ) { public void windowOpened( WindowEvent e ) {
updateInfoLabel(); updateInfoLabel();
closeButton.requestFocusInWindow(); closeButton.requestFocusInWindow();
} }
} );
// update info label when moved to another screen
frame.addComponentListener( new ComponentAdapter() {
@Override @Override
public void windowActivated( WindowEvent e ) { public void componentMoved( ComponentEvent e ) {
updateInfoLabel(); updateInfoLabel();
} }
} ); } );
@@ -123,11 +129,14 @@ class ControlBar
private void updateInfoLabel() { private void updateInfoLabel() {
double systemScaleFactor = UIScale.getSystemScaleFactor( getGraphicsConfiguration() ); double systemScaleFactor = UIScale.getSystemScaleFactor( getGraphicsConfiguration() );
float userScaleFactor = UIScale.getUserScaleFactor(); float userScaleFactor = UIScale.getUserScaleFactor();
infoLabel.setText( "(Java " + System.getProperty( "java.version" ) String newInfo = "(Java " + System.getProperty( "java.version" )
+ (systemScaleFactor != 1 ? ("; system scale factor " + systemScaleFactor) : "") + (systemScaleFactor != 1 ? ("; system scale factor " + systemScaleFactor) : "")
+ (userScaleFactor != 1 ? ("; user scale factor " + userScaleFactor) : "") + (userScaleFactor != 1 ? ("; user scale factor " + userScaleFactor) : "")
+ (systemScaleFactor == 1 && userScaleFactor == 1 ? "; no scaling" : "") + (systemScaleFactor == 1 && userScaleFactor == 1 ? "; no scaling" : "")
+ ")" ); + ")";
if( !newInfo.equals( infoLabel.getText() ) )
infoLabel.setText( newInfo );
} }
private void registerSwitchToLookAndFeel( int keyCode, String lafClassName ) { private void registerSwitchToLookAndFeel( int keyCode, String lafClassName ) {