schmitzm.swing
Class SwingUtil

java.lang.Object
  extended by schmitzm.swing.SwingUtil

public class SwingUtil
extends Object

Diese Klasse beinhaltet statische Hilfsfunktionen fuer das Arbeiten mit Swing-GUIs.

Version:
1.1
Author:
Martin Schmitz (University of Bonn/Germany), Stefan Alfons Krüger

Field Summary
static int BOUNDS_INNER
          Modus "Innen".
static int BOUNDS_OUTER
          Modus "Aussen".
static int CENTER
          Ausrichtung zentriert.
static Cursor CROSSHAIR_CURSOR
          Cursor in Form eines Zielkreuzes
static int EAST
          Ausrichtung mitte-rechts.
static Cursor INFO_CURSOR
          Cursor in Form eines Zielkreuzes mit kleinem i
static int NORTH
          Ausrichtung oben-mitte.
static int NORTHEAST
          Ausrichtung oben-rechts.
static int NORTHWEST
          Ausrichtung oben-links.
static Cursor PAN_CURSOR
          Cursor in Form einer offenen Hand
static Cursor PANNING_CURSOR
          Cursor in Form einer geschlossenen Hand
static ResourceProvider RESOURCE
          ResourceProvider, der die Lokalisation fuer GUI-Komponenten des Package schmitzm.swing zur Verfuegung stellt.
static Cursor SELECTION_ADD_CURSOR
           
static Cursor SELECTION_REMOVE_CURSOR
           
static Cursor SELECTION_SET_CURSOR
           
static int SOUTH
          Ausrichtung unten-mitte.
static int SOUTHEAST
          Ausrichtung unten-rechts.
static int SOUTHWEST
          Ausrichtung unten-links.
static int WEST
          Ausrichtung mitte-links.
static Cursor ZOOM_CURSOR
          Cursor in Form einer Lupe ohne Symbol
static Cursor ZOOMIN_CURSOR
          Cursor in Form einer Lupe mit Plus Symbol
static Cursor ZOOMOUT_CURSOR
          Cursor in Form einer Lupe mit Minus Symbol
 
Constructor Summary
SwingUtil()
           
 
Method Summary
static void centerFrameOnScreen(Component comp)
          Zentriert ein Fenster auf dem Monitor.
static void centerFrameOnScreen(Window comp)
          Zentriert ein Fenster auf dem Monitor.
static void centerFrameOnScreenRandom(Component comp)
          Zentriert ein Fenster auf dem Monitor, aber verrückt das Window per Zufall um 10 Prozenz
static void clearAround(Graphics2D graphics, Rectangle paintArea, Rectangle clearArea, Color bgColor)
          Clears the four rectengular areas around a given inner Rectangle.
static void clearImage(BufferedImage image, Color bgColor)
          Erase an image.
static String convertColorToHex(Color color)
          Versucht, aus einem String eine Farbe zu erstellen.
static Cursor createCursorFromResourcePath(String imgPath, int x, int y, String name)
          Erzeugt einen Cursor auf Basis einer relativen Pfad-Angabe.
static JFrame createFrame(Component comp, String title, Image icon)
          Erzeugt ein neues Fenster mit BorderLayout und zeigt darin eine Component an.
static ImageIcon createImageIconFromResourcePath(Class resourceBase, String imgPath, String imgDesc)
          Erzeugt ein Icon auf Basis einer relativen Pfad-Angabe.
static ImageIcon createImageIconFromResourcePath(String imgPath, String imgDesc)
          Erzeugt ein Icon auf Basis einer relativen Pfad-Angabe.
static void deiconify(JFrame frame)
          This method deiconifies a frame; the maximized bits are not affected.
static void expandAll(JTree tree, boolean expand)
          Copied from http://www.exampledepot.com/egs/javax.swing.tree/ExpandAll.html e1029.
static void expandAll(JTree tree, TreePath path, boolean expand)
          If expand is true, expands all nodes on the way down the path.
static void fixComponentSize(Component comp)
          Fixiert die Groesse einer GUI-Komponente mit der aktuell bevorzugten Groesse.
static void fixComponentSize(Component comp, Dimension d)
          Fixiert die Groesse einer GUI-Komponente.
static String getNumberFormatPattern(double sample)
          Erstellt das Pattern fuer ein NumberFormat.
static String getNumberFormatPattern(int digits)
          Erstellt das Pattern fuer ein NumberFormat.
static Frame getParentFrame(Component comp)
          Liefert den Frame, das eine Kompoenente beinhaltet.
static Window getParentWindow(Component comp)
          Liefert das Fenster, das eine GUI-Komponente beinhaltet.
static Component getParentWindowComponent(Component comp)
          Liefert das Fenster, das eine Kompoenente beinhaltet.
static boolean isChildComponent(Component child, Component parent)
          Prueft, ob eine Komponente eine Kind-Komponente einer anderen Komponente ist.
static void maximize(Frame frame)
          This method maximizes a frame; the iconified bit is not affected Taken from e564.
static boolean packParentWindow(Component comp)
          Packt das Fenster, in dem eine Kompoenente plaziert ist.
static Color parseColor(String colorStr)
          Versucht, aus einem String eine Farbe zu erstellen.
static String R(String key, Object... values)
          Convenience method to access the translation resources.
static void resetCaption(Component comp, Object newLabel)
          Setzt das Label eine Componente neu.
static void setAllBackground(Component comp, Color color)
          Setzt die Hintergrundfarbe einer Komponente und aller darin enthaltener Komponenten.
static void setColumnLook(JTable table, Integer modelIdx, TableCellRenderer cellRenderer, Integer minWidth, Integer preferredWidth, Integer maxWidth)
          Allows to define a renderer and min- and max width of a column with just one line of code.
static void setHeight(Component comp, int h)
          Aendert die Hoehe einer GUI-Komponente.
static void setMaximumHeight(Component comp, int h)
          Aendert die maximal erlaubte Hoehe einer GUI-Komponente.
static void setMaximumWidth(Component comp, int w)
          Aendert die maximal erlaubte Breite einer GUI-Komponente.
static void setMinimumHeight(Component comp, int h)
          Aendert die minimal erlaubte Hoehe einer GUI-Komponente.
static void setMinimumWidth(Component comp, int w)
          Aendert die minimal erlaubte Breite einer GUI-Komponente.
static void setPreferredHeight(Component comp, int h)
          Aendert die bevorzugte Hoehe einer GUI-Komponente.
static void setPreferredWidth(Component comp, int w)
          Aendert die bevorzugte Breite einer GUI-Komponente.
static void setRelativeFramePosition(Component comp, Component relComp, double relX, double relY)
          Positioniert ein Fenster auf dem Monitor relativ zur Position eines anderen Fensters. (0.5/0.5) positioniert das Fenster z.B. genau in der Mitte anderen Fensters. (0.25/0.5) setzt das Fenster vertikal in die Mitte und horizontal auf ein Viertel des Referenz-Fensters.
static void setRelativeFramePosition(Component comp, Component relWindow, int type, int position)
          Positioniert ein Fenster auf dem Monitor relativ zur Position eines anderen Fensters.
static void setRelativeFramePosition(Component comp, double relX, double relY)
          Positioniert ein Fenster auf dem Monitor, relativ zu dessen Groesse
static void setWidth(Component comp, int w)
          Aendert die Breite einer GUI-Komponente.
static JFrame showFrame(Component comp, String title, Image icon)
          Zeigt ein neues Fenster einer Component an.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

RESOURCE

public static ResourceProvider RESOURCE
ResourceProvider, der die Lokalisation fuer GUI-Komponenten des Package schmitzm.swing zur Verfuegung stellt. Diese sind in properties-Dateien unter schmitzm.swing.resource.locales hinterlegt.


ZOOMIN_CURSOR

public static final Cursor ZOOMIN_CURSOR
Cursor in Form einer Lupe mit Plus Symbol


ZOOMOUT_CURSOR

public static final Cursor ZOOMOUT_CURSOR
Cursor in Form einer Lupe mit Minus Symbol


ZOOM_CURSOR

public static final Cursor ZOOM_CURSOR
Cursor in Form einer Lupe ohne Symbol


PAN_CURSOR

public static final Cursor PAN_CURSOR
Cursor in Form einer offenen Hand


PANNING_CURSOR

public static final Cursor PANNING_CURSOR
Cursor in Form einer geschlossenen Hand


CROSSHAIR_CURSOR

public static final Cursor CROSSHAIR_CURSOR
Cursor in Form eines Zielkreuzes


INFO_CURSOR

public static final Cursor INFO_CURSOR
Cursor in Form eines Zielkreuzes mit kleinem i


SELECTION_ADD_CURSOR

public static final Cursor SELECTION_ADD_CURSOR

SELECTION_SET_CURSOR

public static final Cursor SELECTION_SET_CURSOR

SELECTION_REMOVE_CURSOR

public static final Cursor SELECTION_REMOVE_CURSOR

BOUNDS_INNER

public static final int BOUNDS_INNER
Modus "Innen".

See Also:
#setRelativeFramePosition(Window,Window,int,int), Constant Field Values

BOUNDS_OUTER

public static final int BOUNDS_OUTER
Modus "Aussen".

See Also:
#setRelativeFramePosition(Window,Window,int,int), Constant Field Values

NORTH

public static final int NORTH
Ausrichtung oben-mitte.

See Also:
Constant Field Values

NORTHWEST

public static final int NORTHWEST
Ausrichtung oben-links.

See Also:
Constant Field Values

NORTHEAST

public static final int NORTHEAST
Ausrichtung oben-rechts.

See Also:
Constant Field Values

SOUTH

public static final int SOUTH
Ausrichtung unten-mitte.

See Also:
Constant Field Values

SOUTHWEST

public static final int SOUTHWEST
Ausrichtung unten-links.

See Also:
Constant Field Values

SOUTHEAST

public static final int SOUTHEAST
Ausrichtung unten-rechts.

See Also:
Constant Field Values

CENTER

public static final int CENTER
Ausrichtung zentriert.

See Also:
Constant Field Values

WEST

public static final int WEST
Ausrichtung mitte-links.

See Also:
Constant Field Values

EAST

public static final int EAST
Ausrichtung mitte-rechts.

See Also:
Constant Field Values
Constructor Detail

SwingUtil

public SwingUtil()
Method Detail

R

public static String R(String key,
                       Object... values)
Convenience method to access the translation resources.


createImageIconFromResourcePath

public static ImageIcon createImageIconFromResourcePath(String imgPath,
                                                        String imgDesc)
Erzeugt ein Icon auf Basis einer relativen Pfad-Angabe. Als Basis-Verzeichnis wird der Classpath von SwingUtil verwendet.

Parameters:
imgPath - relativer Pfad des Icons
imgDesc - Beschreibung fuer Icon
Returns:
null, wenn das Icon nicht gefunden wird

createImageIconFromResourcePath

public static ImageIcon createImageIconFromResourcePath(Class resourceBase,
                                                        String imgPath,
                                                        String imgDesc)
Erzeugt ein Icon auf Basis einer relativen Pfad-Angabe.

Parameters:
resourceBase - Klasse, deren Classpath als Basis-Verzeichnis verwendet wird
imgPath - relativer Pfad des Icons
imgDesc - Beschreibung fuer Icon
Returns:
null, wenn das Icon nicht gefunden wird

createCursorFromResourcePath

public static Cursor createCursorFromResourcePath(String imgPath,
                                                  int x,
                                                  int y,
                                                  String name)
Erzeugt einen Cursor auf Basis einer relativen Pfad-Angabe. Als Basis-Verzeichnis wird der Classpath von SwingUtil verwendet.

Parameters:
imgPath - relativer Pfad des Icons
x - X-Position im Image, die den Hotspot des Cursors darstellen soll
y - Y-Position im Image, die den Hotspot des Cursors darstellen soll
name - Bezeichnung fuer den Cursor
Returns:
null, wenn das Icon nicht gefunden wird

createFrame

public static JFrame createFrame(Component comp,
                                 String title,
                                 Image icon)
Erzeugt ein neues Fenster mit BorderLayout und zeigt darin eine Component an.

Parameters:
comp - anzuzeigende Komponente (kann null sein)
title - Titel des Fensters (kann null sein)
icon - Icon-Image (kann null sein)

showFrame

public static JFrame showFrame(Component comp,
                               String title,
                               Image icon)
Zeigt ein neues Fenster einer Component an.

Parameters:
comp - anzuzeigende Komponente (kann null sein)
title - Titel des Fensters (kann null sein)
icon - Icon-Image (kann null sein)
See Also:
createFrame(Component, String, Image)

getParentWindow

public static Window getParentWindow(Component comp)
Liefert das Fenster, das eine GUI-Komponente beinhaltet. Wenn GUI-Komponente selber ein Window ist, wird diese zurückgelifert.

Parameters:
comp - eine GUI-Komponente
Returns:
null falls die Komponente in keinem Fenster enthalten ist

getParentFrame

public static Frame getParentFrame(Component comp)
Liefert den Frame, das eine Kompoenente beinhaltet.

Parameters:
comp - eine GUI-Komponente
Returns:
null falls die Komponente in keinem Frame enthalten ist

getParentWindowComponent

public static Component getParentWindowComponent(Component comp)
Liefert das Fenster, das eine Kompoenente beinhaltet. Dabei kann es sich auch um einen JInternalFrame handelt.

Parameters:
comp - eine GUI-Komponente
Returns:
null falls die Komponente in keinem Fenster enthalten ist

packParentWindow

public static boolean packParentWindow(Component comp)
Packt das Fenster, in dem eine Kompoenente plaziert ist.

Parameters:
comp - eine GUI-Komponente
Returns:
false falls die Komponente in keinem Fenster enthalten ist
See Also:
Window.pack()

isChildComponent

public static boolean isChildComponent(Component child,
                                       Component parent)
Prueft, ob eine Komponente eine Kind-Komponente einer anderen Komponente ist.

Parameters:
child - Component
parent - Component
Returns:
false wenn child == null, true wenn child == parent, isChildComponent(child.getParent(),parent) sonst

centerFrameOnScreen

public static void centerFrameOnScreen(Component comp)
Zentriert ein Fenster auf dem Monitor.

Parameters:
window - das zu zentrierende Fenster

centerFrameOnScreen

public static void centerFrameOnScreen(Window comp)
Zentriert ein Fenster auf dem Monitor.
Bemerkung: Da Window eine Component ist, ist diese Methode eigentlich ueberfluessig. Es koennte centerFrameOnScreen(Component) verwendet werden. Merkwuerdigerweise macht XULU beim Starten von der Console aus aber Probleme, wenn die Methode centerFrameOnScreen(Window) fehlt!! TODO: Probleme beim Xulu-Start loesen.

Parameters:
window - das zu zentrierende Fenster

centerFrameOnScreenRandom

public static void centerFrameOnScreenRandom(Component comp)
Zentriert ein Fenster auf dem Monitor, aber verrückt das Window per Zufall um 10 Prozenz

Parameters:
comp - Eine Componente des zu zentrierenden Fensters. Wenn comp kein Window ist, wird das Parent Window ermittelt.

setRelativeFramePosition

public static void setRelativeFramePosition(Component comp,
                                            double relX,
                                            double relY)
Positioniert ein Fenster auf dem Monitor, relativ zu dessen Groesse. (0.5/0.5) positioniert das Fenster z.B. genau in der Mitte des Monitors; (0.25/0.5) setzt das Fenster vertikal in die Mitte und horizontal auf ein Viertel der Monitorbreite.

Parameters:
comp - Eine Komponente des zu positionierenden Fensters oder direckt das Window.
relX - Relationsfaktor fuer die horizontale Position (0 < relX < 1)
relY - Relationsfaktor fuer die vertikale Position (0 < relX < 1)

setRelativeFramePosition

public static void setRelativeFramePosition(Component comp,
                                            Component relComp,
                                            double relX,
                                            double relY)
Positioniert ein Fenster auf dem Monitor relativ zur Position eines anderen Fensters. (0.5/0.5) positioniert das Fenster z.B. genau in der Mitte anderen Fensters. (0.25/0.5) setzt das Fenster vertikal in die Mitte und horizontal auf ein Viertel des Referenz-Fensters.

Parameters:
comp - Eine Komponente des zu positionierenden Fensters oder direkt das Window.
relComp - Fenster (parent Fenster der übergebenen Componente) zu dem das Fenster in Relation gesetzt wird (wenn null wird der gesamte Monitor verwendet)
relX - Relationsfaktor fuer die horizontale Position (0 < relX < 1)
relY - Relationsfaktor fuer die vertikale Position (0 < relY < 1)

setRelativeFramePosition

public static void setRelativeFramePosition(Component comp,
                                            Component relWindow,
                                            int type,
                                            int position)
Positioniert ein Fenster auf dem Monitor relativ zur Position eines anderen Fensters. Das Fenster wird jedoch immer innerhalb des Bildschirms positioniert.

Parameters:
window - das zu positionierende Fenster
relWindow - Fenster zu dem das Fenster in Relation gesetzt wird (wenn null wird der gesamte Monitor verwendet)
type - bestimmt, ob das Fenster innerhalb oder ausserhalb des relativen Fensters positioniert wird (BOUNDS_INNER oder BOUNDS_OUTER).
position - Positionierung des Fensters (NORTH, NORTHEAST, ...)

setWidth

public static void setWidth(Component comp,
                            int w)
Aendert die Breite einer GUI-Komponente.

Parameters:
comp - GUI-Komponente
w - Breite

setHeight

public static void setHeight(Component comp,
                             int h)
Aendert die Hoehe einer GUI-Komponente.

Parameters:
comp - GUI-Komponente
h - Hoehe

setPreferredWidth

public static void setPreferredWidth(Component comp,
                                     int w)
Aendert die bevorzugte Breite einer GUI-Komponente.

Parameters:
comp - GUI-Komponente
w - Breite

setPreferredHeight

public static void setPreferredHeight(Component comp,
                                      int h)
Aendert die bevorzugte Hoehe einer GUI-Komponente.

Parameters:
comp - GUI-Komponente
h - Hoehe

setMinimumWidth

public static void setMinimumWidth(Component comp,
                                   int w)
Aendert die minimal erlaubte Breite einer GUI-Komponente.

Parameters:
comp - GUI-Komponente
w - Breite

setMinimumHeight

public static void setMinimumHeight(Component comp,
                                    int h)
Aendert die minimal erlaubte Hoehe einer GUI-Komponente.

Parameters:
comp - GUI-Komponente
h - Hoehe

setMaximumWidth

public static void setMaximumWidth(Component comp,
                                   int w)
Aendert die maximal erlaubte Breite einer GUI-Komponente.

Parameters:
comp - GUI-Komponente
w - Breite

setMaximumHeight

public static void setMaximumHeight(Component comp,
                                    int h)
Aendert die maximal erlaubte Hoehe einer GUI-Komponente.

Parameters:
comp - GUI-Komponente
h - Hoehe

fixComponentSize

public static void fixComponentSize(Component comp,
                                    Dimension d)
Fixiert die Groesse einer GUI-Komponente.

Parameters:
comp - GUI-Komponente
d - Ausmasse (Hoehe und Breite)

fixComponentSize

public static void fixComponentSize(Component comp)
Fixiert die Groesse einer GUI-Komponente mit der aktuell bevorzugten Groesse.

Parameters:
comp - GUI-Komponente

setAllBackground

public static void setAllBackground(Component comp,
                                    Color color)
Setzt die Hintergrundfarbe einer Komponente und aller darin enthaltener Komponenten.

Parameters:
comp - Komponente
color - neue Hintergrund-Farbe

parseColor

public static Color parseColor(String colorStr)
                        throws IllegalArgumentException
Versucht, aus einem String eine Farbe zu erstellen. Drei Moeglichekeiten gibt es fuer das Format des Strings:
  1. "RGB(red,green,blue)"
    wobei red,green und blue dezimale Werte zwischen 0 und 255 sind.
  2. Der String stellt einen Integer-Wert im dezimalen, oktalen oder hexadezimalen Format dar, aus dem die 3 RGB-Werte extrahiert werden (siehe Color.decode(..)).
  3. Der String spezifiziert ein statisches Feld der Klasse Color.
    z.B. steht "RED" fuer Color.RED, "darkGray" fuer Color.darkGray oder "LIGHT_GRAY" fuer Color.LIGHT_GRAY

Throws:
IllegalArgumentException - wenn der uebergebene String nicht interpretiert werden kann.

convertColorToHex

public static String convertColorToHex(Color color)
Versucht, aus einem String eine Farbe zu erstellen. Drei Moeglichekeiten gibt es fuer das Format des Strings:
  1. "RGB(red,green,blue)"
    wobei red,green und blue dezimale Werte zwischen 0 und 255 sind.
  2. Der String stellt einen Integer-Wert im dezimalen, oktalen oder hexadezimalen Format dar, aus dem die 3 RGB-Werte extrahiert werden (siehe Color.decode(..)).
  3. Der String spezifiziert ein statisches Feld der Klasse Color.
    z.B. steht "RED" fuer Color.RED, "darkGray" fuer Color.darkGray oder "LIGHT_GRAY" fuer Color.LIGHT_GRAY

Throws:
IllegalArgumentException - wenn der uebergebene String nicht interpretiert werden kann.

resetCaption

public static void resetCaption(Component comp,
                                Object newLabel)
Setzt das Label eine Componente neu. Macht nichts, falls newLabel oder comp den Wert null hat.

Parameters:
comp - JLabel, AbstractButton, JDialog oder Frame
newLabel - neue Beschriftung
Throws:
UnsupportedOperationException - falls comp nicht unterstuetzt wird.

getNumberFormatPattern

public static String getNumberFormatPattern(double sample)
Erstellt das Pattern fuer ein NumberFormat.

Parameters:
sample - Beispiel-Wert, der die Anzahl der dargestellten Nachkomma-Stellen bestimmt

getNumberFormatPattern

public static String getNumberFormatPattern(int digits)
Erstellt das Pattern fuer ein NumberFormat.

Parameters:
digits - Anzahl der dargestellten Nachkomma-Stellen

expandAll

public static void expandAll(JTree tree,
                             boolean expand)
Copied from http://www.exampledepot.com/egs/javax.swing.tree/ExpandAll.html e1029. "Expanding or Collapsing all Nodes in a JTree Component".
If expand is true,expands all nodes in the tree. Otherwise, collapses all nodes in the tree.

Parameters:
tree - JTree to expand or collapse
expand - If true all nodfes will be expanded, otherwise they will be collapsed.

expandAll

public static void expandAll(JTree tree,
                             TreePath path,
                             boolean expand)
If expand is true, expands all nodes on the way down the path.

Parameters:
tree - JTree to expand or collapse

maximize

public static void maximize(Frame frame)
This method maximizes a frame; the iconified bit is not affected Taken from e564. Iconifying and Maximizing a Frame, http://www.exampledepot.com/egs/java.awt/frame_FrameIconify.html


deiconify

public static void deiconify(JFrame frame)
This method deiconifies a frame; the maximized bits are not affected.


setColumnLook

public static void setColumnLook(JTable table,
                                 Integer modelIdx,
                                 TableCellRenderer cellRenderer,
                                 Integer minWidth,
                                 Integer preferredWidth,
                                 Integer maxWidth)
Allows to define a renderer and min- and max width of a column with just one line of code. Just for convenience.

Parameters:
table - A JTable to access the column model.
modelIdx - column index in model counting
cellRenderer - null allowed
minwidth - null allowed
prefwidth - null allowed
maxwidth - null allowed

clearImage

public static void clearImage(BufferedImage image,
                              Color bgColor)
Erase an image. This is much faster than recreating a new BufferedImage.


clearAround

public static void clearAround(Graphics2D graphics,
                               Rectangle paintArea,
                               Rectangle clearArea,
                               Color bgColor)
Clears the four rectengular areas around a given inner Rectangle. Clearing is faster than painting.

Parameters:
paintArea - The Rectangle that shall not be cleared.
clearArea - The Rectangle that shall be cleared, except for where it intersects with the paintArea.