public class DefaultComponentFactory extends Object implements ComponentFactory
ComponentFactory
interface
that creates UI components as required by the
PanelBuilder
.
The texts used in methods #createLabel(String)
and
#createTitle(String)
can contain an optional mnemonic marker.
The mnemonic and mnemonic index are indicated by a single ampersand
(&). For example "&Save",
or "Save &as". To use the ampersand itself
duplicate it, for example "Look&&Feel".
Constructor and Description |
---|
DefaultComponentFactory() |
Modifier and Type | Method and Description |
---|---|
JButton |
createButton(Action action)
Creates and returns a button that is bound to the given Action.
|
JLabel |
createHeaderLabel(String markedText)
Creates and returns a label intended for pane headers that uses
a larger font than the control font and a special foreground color.
|
JLabel |
createLabel(String textWithMnemonic)
Creates and returns a label with an optional mnemonic.
|
JLabel |
createReadOnlyLabel(String textWithMnemonic)
Creates and returns a label with an optional mnemonic
that is intended to label a read-only component.
|
JComponent |
createSeparator(JLabel label)
Creates and returns a labeled separator.
|
JComponent |
createSeparator(String textWithMnemonic)
Creates and returns a labeled separator with the label in the left-hand
side.
|
JComponent |
createSeparator(String textWithMnemonic,
int alignment)
Creates and returns a labeled separator.
|
JLabel |
createTitle(String textWithMnemonic)
Creates and returns a title label that uses the foreground color
and font of a
TitledBorder . |
static DefaultComponentFactory |
getInstance()
Returns the sole instance of this factory class.
|
public static DefaultComponentFactory getInstance()
public JLabel createLabel(String textWithMnemonic)
createLabel("Name"); // No mnemonic createLabel("N&ame"); // Mnemonic is 'a' createLabel("Save &as"); // Mnemonic is the second 'a' createLabel("Look&&Feel"); // No mnemonic, text is Look&Feel
createLabel
in interface ComponentFactory
textWithMnemonic
- the label's text -
may contain an ampersand (&) to mark a mnemonicpublic JLabel createReadOnlyLabel(String textWithMnemonic)
createReadOnlyLabel("Name"); // No mnemonic createReadOnlyLabel("N&ame"); // Mnemonic is 'a' createReadOnlyLabel("Save &as"); // Mnemonic is the second 'a' createReadOnlyLabel("Look&&Feel"); // No mnemonic, text is Look&Feel
createReadOnlyLabel
in interface ComponentFactory
textWithMnemonic
- the label's text -
may contain an ampersand (&) to mark a mnemonicpublic JButton createButton(Action action)
JGButton
is bound to some custom Action properties.
This default implementation just returns a JButton
.
createButton
in interface ComponentFactory
action
- provides [bound] visual properties for the buttonpublic JLabel createTitle(String textWithMnemonic)
TitledBorder
.
createTitle("Name"); // No mnemonic createTitle("N&ame"); // Mnemonic is 'a' createTitle("Save &as"); // Mnemonic is the second 'a' createTitle("Look&&Feel"); // No mnemonic, text is Look&Feel
createTitle
in interface ComponentFactory
textWithMnemonic
- the label's text -
may contain an ampersand (&) to mark a mnemonicpublic JLabel createHeaderLabel(String markedText)
ComponentFactory
If the label text is marked with the mnemonic marker '&',
the mnemonic and mnemonic index will be configured.
For example if markedText
is "&Charge Codes", the text
will be set to "Charge Codes", the mnemonic is 'C', and the
mnemonic index is 0.
A simple implementation may just delegate to
ComponentFactory.createTitle(String)
.
createHeaderLabel
in interface ComponentFactory
markedText
- the label text with optional mnemonic markerpublic JComponent createSeparator(String textWithMnemonic)
TitledBorder
.
createSeparator("Name"); // No mnemonic createSeparator("N&ame"); // Mnemonic is 'a' createSeparator("Save &as"); // Mnemonic is the second 'a' createSeparator("Look&&Feel"); // No mnemonic, text is Look&Feel
textWithMnemonic
- the label's text -
may contain an ampersand (&) to mark a mnemonicpublic JComponent createSeparator(String textWithMnemonic, int alignment)
TitledBorder
.
final int LEFT = SwingConstants.LEFT; createSeparator("Name", LEFT); // No mnemonic createSeparator("N&ame", LEFT); // Mnemonic is 'a' createSeparator("Save &as", LEFT); // Mnemonic is the second 'a' createSeparator("Look&&Feel", LEFT); // No mnemonic, text is Look&Feel
createSeparator
in interface ComponentFactory
textWithMnemonic
- the label's text -
may contain an ampersand (&) to mark a mnemonicalignment
- text alignment, one of SwingConstants.LEFT
,
SwingConstants.CENTER
, SwingConstants.RIGHT
public JComponent createSeparator(JLabel label)
TitledBorder
.
The label's position is determined by the label's horizontal alignment,
which must be one of:
SwingConstants.LEFT
,
SwingConstants.CENTER
,
SwingConstants.RIGHT
.
TODO: Since this method has been marked public in version 1.0.6, we need to precisely describe the semantic of this method.
TODO: Check if we can relax the constraint for the label alignment and also accept LEADING and TRAILING.
label
- the title label componentNullPointerException
- if the label is null
IllegalArgumentException
- if the label's horizontal alignment
is not one of: SwingConstants.LEFT
,
SwingConstants.CENTER
,
SwingConstants.RIGHT
.Copyright © 2002-2014 JGoodies Software GmbH. All Rights Reserved.