From 4be6c80ac51f342f160b4c9fd992841fa365b742 Mon Sep 17 00:00:00 2001 From: aterai Date: Mon, 27 Nov 2017 15:22:35 +0900 Subject: [PATCH] add: SliderFocusBorder --- SliderFocusBorder/build.xml | 541 ++++++++++++++++++ SliderFocusBorder/config.gradle | 6 + SliderFocusBorder/config/jnlp.xml | 8 + SliderFocusBorder/config/properties.xml | 52 ++ SliderFocusBorder/run.bat | 21 + SliderFocusBorder/run.sh | 30 + .../src/java/example/MainPanel.java | 99 ++++ SliderFocusBorder/src/web/example.jnlp | 16 + SliderFocusBorder/src/web/index.html | 16 + SliderFocusBorder/src/web/screenshot.png | Bin 0 -> 2087 bytes 10 files changed, 789 insertions(+) create mode 100644 SliderFocusBorder/build.xml create mode 100644 SliderFocusBorder/config.gradle create mode 100644 SliderFocusBorder/config/jnlp.xml create mode 100644 SliderFocusBorder/config/properties.xml create mode 100644 SliderFocusBorder/run.bat create mode 100644 SliderFocusBorder/run.sh create mode 100644 SliderFocusBorder/src/java/example/MainPanel.java create mode 100644 SliderFocusBorder/src/web/example.jnlp create mode 100644 SliderFocusBorder/src/web/index.html create mode 100644 SliderFocusBorder/src/web/screenshot.png diff --git a/SliderFocusBorder/build.xml b/SliderFocusBorder/build.xml new file mode 100644 index 0000000000..5d3b34f947 --- /dev/null +++ b/SliderFocusBorder/build.xml @@ -0,0 +1,541 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${env.FINDBUGS_HOME} + + + + + + userdir: ${user.dir} + basedir: ${basedir} + + + + + + + + + + + + ${env.SPOTBUGS_HOME} + + + + + + + + + + + + + + + + ${env.PMD_HOME} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SliderFocusBorder/config.gradle b/SliderFocusBorder/config.gradle new file mode 100644 index 0000000000..c8f8d0fa27 --- /dev/null +++ b/SliderFocusBorder/config.gradle @@ -0,0 +1,6 @@ +vendor = 'Java Swing Tips - https://ateraimemo.com/' +version = '1.0.0' +year = '2003-2017' + +main.class = 'example.MainPanel' +runtime.classpath = '.' diff --git a/SliderFocusBorder/config/jnlp.xml b/SliderFocusBorder/config/jnlp.xml new file mode 100644 index 0000000000..a4f5b59757 --- /dev/null +++ b/SliderFocusBorder/config/jnlp.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/SliderFocusBorder/config/properties.xml b/SliderFocusBorder/config/properties.xml new file mode 100644 index 0000000000..3e92fe1b71 --- /dev/null +++ b/SliderFocusBorder/config/properties.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SliderFocusBorder/run.bat b/SliderFocusBorder/run.bat new file mode 100644 index 0000000000..0ac174735c --- /dev/null +++ b/SliderFocusBorder/run.bat @@ -0,0 +1,21 @@ +@echo off +setlocal +echo Swing Example +echo ------------------- + +if "%JAVA_HOME%" == "" goto :error +set MAIN_CLASS=example.MainPanel +set CLASSPATH=target\classes;lib\* + +echo Running with classpath "%CLASSPATH%" +echo Starting... +"%JAVA_HOME%\bin\java.exe" -classpath "%CLASSPATH%" %MAIN_CLASS% %* + +goto :end + +:error +echo ERROR: JAVA_HOME not found in your environment. +echo Please, set the JAVA_HOME variable in your environment to match the +echo location of the Java Virtual Machine you want to use. + +:end diff --git a/SliderFocusBorder/run.sh b/SliderFocusBorder/run.sh new file mode 100644 index 0000000000..b34955af65 --- /dev/null +++ b/SliderFocusBorder/run.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +echo +echo "Swing Example" +echo "-------------------" +echo + +if [ "$JAVA_HOME" = "" ] ; then + echo "ERROR: JAVA_HOME not found in your environment." + echo + echo "Please, set the JAVA_HOME variable in your environment to match the" + echo "location of the Java Virtual Machine you want to use." + exit 1 +fi + +if [ `uname | grep -n CYGWIN` ]; then + PS=";" +elif [ `uname | grep -n Windows` ]; then + PS=";" +else + PS=":" +fi + +LOCALCLASSPATH=target/classes${PS}lib/* + +echo Running with classpath $LOCALCLASSPATH +echo Starting... +echo + +"$JAVA_HOME/bin/java" -classpath "$LOCALCLASSPATH" example.MainPanel $* diff --git a/SliderFocusBorder/src/java/example/MainPanel.java b/SliderFocusBorder/src/java/example/MainPanel.java new file mode 100644 index 0000000000..0d8e15c72f --- /dev/null +++ b/SliderFocusBorder/src/java/example/MainPanel.java @@ -0,0 +1,99 @@ +package example; +//-*- mode:java; encoding:utf-8 -*- +// vim:set fileencoding=utf-8: +//@homepage@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import com.sun.java.swing.plaf.windows.WindowsSliderUI; + +public final class MainPanel extends JPanel { + private MainPanel() { + super(new BorderLayout()); + // UIManager.put("Slider.border", BorderFactory.createLineBorder(Color.GREEN)); + // UIManager.put("Slider.focus", UIManager.get("Slider.background")); + // UIManager.put("Slider.focusInsets", new Insets(5, 15, 5, 15)); + + JSlider slider1 = new JSlider(0, 100, 0); + initSlider(slider1); + // TEST: slider1.setBorder(BorderFactory.createLineBorder(Color.RED)); + + JSlider slider2 = new JSlider(0, 100, 0) { + private transient FocusListener listener; + @Override public void updateUI() { + removeFocusListener(listener); + super.updateUI(); + if (getUI() instanceof WindowsSliderUI) { + setUI(new WindowsSliderUI(this) { + @Override public void paintFocus(Graphics g) { + // // TEST: + // Graphics2D g2 = (Graphics2D) g.create(); + // g2.setPaint(new Color(255, 255, 255, 100)); + // g2.fill(focusRect); + // g2.dispose(); + } + // @Override protected Color getHighlightColor() { + // Color c = super.getHighlightColor(); + // return slider.hasFocus() ? Color.GREEN : Color.RED; + // } + }); + Color bgc = getBackground(); + listener = new FocusListener() { + @Override public void focusGained(FocusEvent e) { + setBackground(bgc.brighter()); + } + @Override public void focusLost(FocusEvent e) { + setBackground(bgc); + } + }; + addFocusListener(listener); + } + } + }; + initSlider(slider2); + + Box box = Box.createVerticalBox(); + box.add(Box.createVerticalStrut(20)); + box.add(makeTitledPanel("Default", slider1)); + box.add(Box.createVerticalStrut(20)); + box.add(makeTitledPanel("Override SilderUI#paintFocus(...)", slider2)); + box.add(Box.createVerticalGlue()); + + add(box, BorderLayout.NORTH); + setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); + setPreferredSize(new Dimension(320, 240)); + } + private static JSlider initSlider(JSlider slider) { + slider.setMajorTickSpacing(10); + slider.setMinorTickSpacing(5); + slider.setPaintTicks(true); + return slider; + } + private static Component makeTitledPanel(String title, Component c) { + JPanel p = new JPanel(new BorderLayout()); + p.setBorder(BorderFactory.createTitledBorder(title)); + p.add(c); + return p; + } + public static void main(String... args) { + EventQueue.invokeLater(new Runnable() { + @Override public void run() { + createAndShowGUI(); + } + }); + } + public static void createAndShowGUI() { + try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch (ClassNotFoundException | InstantiationException + | IllegalAccessException | UnsupportedLookAndFeelException ex) { + ex.printStackTrace(); + } + JFrame frame = new JFrame("@title@"); + frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); + frame.getContentPane().add(new MainPanel()); + frame.pack(); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } +} diff --git a/SliderFocusBorder/src/web/example.jnlp b/SliderFocusBorder/src/web/example.jnlp new file mode 100644 index 0000000000..61249cb0cf --- /dev/null +++ b/SliderFocusBorder/src/web/example.jnlp @@ -0,0 +1,16 @@ + + + + @title@ + @vendor@ + + Swing Example + example + + + + + + + + diff --git a/SliderFocusBorder/src/web/index.html b/SliderFocusBorder/src/web/index.html new file mode 100644 index 0000000000..ac872a5b13 --- /dev/null +++ b/SliderFocusBorder/src/web/index.html @@ -0,0 +1,16 @@ + + + +@title@ + + + + + + + + diff --git a/SliderFocusBorder/src/web/screenshot.png b/SliderFocusBorder/src/web/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..6ca06c8ecbc5c9f865a982cdcce3fd86d307552b GIT binary patch literal 2087 zcmb_deK^x=AD@yo<=DJLFXz}KRA`TpnNH=0=*5ntmzC7%)JjZ}*3cZ*&s&m(bb3L~ zQY*3*mXJWQzGBPOA!I4-#ksCZr|P1PX;>dV2cX zw{H@OWN>h>udlDGt4pX=@*vgh?5t3$(n2chD*_>3A%t|~QY~Mqg_Jz4wx_3uz*e^O zPmq}cUcGc~ZfU3Olm=7+TGZ!-=A=+n2&0X#$9LJ<>Z&Wo|>9EnUr_=VRJ@t zRRH<&fta-6;bC6GpPikZgp-Uzak(ogPnk^7zfPo{2JiCNBDHFU38~0@ZBbRT7Sg?j zlvyv*Xf%X+WmML~nVA_Oq+qf|JV^UvXbh9DV%Dn&Y{mTiyb#jD*t(RUqoYH@up6zt zHZU;IDeN8ZYRo9)WE7S|)fpox_FAn{aUIWn)kKQR4WsAxbCcTJ+o{Zw;a7Qg%W8%z z84zeMl}dS#@>t?6UcHD}uQ*D-btK_tX>C*5{mS%0&eyMBN7`!A3d;F>zWgd~_~LST z;;I)7AI8SUxUb&36#AWk!Hkyd^z{y*g((E5vInt9qyEd!uLKRbxZ-qUjUI6G9g~d* zAALwWn^0R*TR6AtNCe^T4Rr`LxcGRc7-c-3-%#-iyvIy4j{%6y2u=KqUCE106c`bY zLwZJ@y6SWz`F5oNUVM`BDLm)SH?dSK3!~Z+s}}m z%`vA}Z@)lPc_7{(4fmOU=fUr|bjc&MT7XQ59u1zwu5B#0A9w=~M}SlKJf)khZ_SR| zkp(G!s}vVmBwXQs1BZ2Bsho5u#hf0Ke4&BYgIQQ1j*UAK(OX(9xagC8ctqqJC|AE% zwy0xa@rmCSs_DeG#jW<>^IqH7mKCs3>&?ZHsF%5jXQhiCw^Emc>?MPr5i99lx3}43 zQKQOwNL|BqnrD-LZ%IvR>0&jqK+4I(-K$9-D>g^DV)#3*+gq*^QFG71Qn#<>Igk1@ zd16>LXVnRLw73lb+VPQ-+_>66r@mZpF#5~%h>-*hURv$9^0 zt@B(KSm6dgU3@Tb%KM|9;i+t3**Vb}Xtphkh513><*y#bx$y@X8Nw62v$kDQ$XA8y+uLH*~ zd`b?w>NA~NN%vTf@Ugn%^t~+1mIAz-eb9#lta;g60l0}3;u~65JuT>U;RH-?L4Y{J z|FDZ|D~SIkQ+E)kf%ko2YND;oc)7PaiD)o-78R;CKv#;>(O~#WOAzbKVjv%$3PCo+ z?k0LhSZHS`Q5=80bwXCRO(?#p_I8oZtOLC0aWZqeK0cjd*if2sWeNJ9OX#FA;6IuF zy>U=tK~Yff;L^QP$Mfx(8Z_n9E$GGGeXXgJHYSOyZU+49RJtpfJJGz+yt_CXTZO19 zDdNWdE%Co1^lmb5nBmlMv)fwzj_sq0Jy?vcA{X_fPN%;slbwyEbTx4e_PB)oh9zc}voWOm(=S?mP0j7) zhruD&dk{!iyG7n$U+hovgcFIw1wb76SvS@8aeYDA1S8b+b#q%lPSfQ--yFDLzTiCt zYKdsYatC7{xY)|;QW*og-0*m3>taCy!sFPcubfl&l=?tQOswwi6-RSUM9AY>xN z^t{y|5(9v6l&x<%_Y00Yd-NtZ5VyImYRow_N^`Eb4*`G^sB3c@z?G#8IPSm_6uHdU z_M;=hc1w)g%MDHoqrY5tM(C>X8_MP-?q@f>OGdJq(uQ zZM_*cc@BlT_rOf~BCN)Jce+j)i&AzPCue=IdGiuZ_7aYs{jB1 literal 0 HcmV?d00001