javax.swing
public abstract class AbstractButton extends JComponent implements ItemSelectable, SwingConstants
This class is supposed to serve as a base class for several kinds of buttons with similar but non-identical semantics: toggle buttons (radio buttons and checkboxes), simple push buttons, menu items, etc.
Buttons have many properties, some of which are stored in this class while others are delegated to the button's model. The following properties are available:
Property | Stored in | Bound? |
---|---|---|
action | button | no |
actionCommand | model | no |
borderPainted | button | yes |
contentAreaFilled | button | yes |
disabledIcon | button | yes |
disabledSelectedIcon | button | yes |
displayedMnemonicIndex | button | no |
enabled | model | no |
focusPainted | button | yes |
horizontalAlignment | button | yes |
horizontalTextPosition | button | yes |
icon | button | yes |
iconTextGap | button | no |
label (same as text) | model | yes |
margin | button | yes |
multiClickThreshold | button | no |
pressedIcon | button | yes |
rolloverEnabled | button | yes |
rolloverIcon | button | yes |
rolloverSelectedIcon | button | yes |
selected | model | no |
selectedIcon | button | yes |
selectedObjects | button | no |
text | model | yes |
UI | button | yes |
verticalAlignment | button | yes |
verticalTextPosition | button | yes |
The various behavioral aspects of these properties follows:
true
, the model will fire an ActionEvent to its
ActionListeners, which include the button. The button will propagate
this ActionEvent to its ActionListeners, with the ActionEvent's "source"
property set to refer to the button, rather than the model.Nested Class Summary | |
---|---|
protected abstract class | AbstractButton.AccessibleAbstractButton
A Java Accessibility extension of the AbstractButton. |
protected class | AbstractButton.ButtonChangeListener
An extension of ChangeListener to be serializable. |
Field Summary | |
---|---|
protected ActionListener | actionListener
Listener the button uses to receive ActionEvents from its model. |
static String | BORDER_PAINTED_CHANGED_PROPERTY
Fired in a PropertyChangeEvent when the "borderPainted" property changes. |
protected ChangeEvent | changeEvent ChangeEvent that is fired to button's ChangeEventListeners |
protected ChangeListener | changeListener
Listener the button uses to receive ChangeEvents from its model. |
static String | CONTENT_AREA_FILLED_CHANGED_PROPERTY
Fired in a PropertyChangeEvent when the "contentAreaFilled" property
changes. |
static String | DISABLED_ICON_CHANGED_PROPERTY
Fired in a PropertyChangeEvent when the "disabledIcon" property changes. |
static String | DISABLED_SELECTED_ICON_CHANGED_PROPERTY
Fired in a PropertyChangeEvent when the "disabledSelectedIcon" property
changes. |
static String | FOCUS_PAINTED_CHANGED_PROPERTY
Fired in a PropertyChangeEvent when the "focusPainted" property changes. |
static String | HORIZONTAL_ALIGNMENT_CHANGED_PROPERTY
Fired in a PropertyChangeEvent when the "horizontalAlignment" property
changes. |
static String | HORIZONTAL_TEXT_POSITION_CHANGED_PROPERTY
Fired in a PropertyChangeEvent when the "horizontalTextPosition" property
changes. |
protected ItemListener | itemListener
Listener the button uses to receive ItemEvents from its model. |
static String | ICON_CHANGED_PROPERTY
Fired in a PropertyChangeEvent when the "icon" property changes. |
protected ButtonModel | model The button's current state. |
static String | MARGIN_CHANGED_PROPERTY Fired in a PropertyChangeEvent when the "margin" property changes. |
static String | MNEMONIC_CHANGED_PROPERTY Fired in a PropertyChangeEvent when the "mnemonic" property changes. |
static String | MODEL_CHANGED_PROPERTY Fired in a PropertyChangeEvent when the "model" property changes. |
static String | PRESSED_ICON_CHANGED_PROPERTY Fired in a PropertyChangeEvent when the "pressedIcon" property changes. |
static String | ROLLOVER_ENABLED_CHANGED_PROPERTY
Fired in a PropertyChangeEvent when the "rolloverEnabled" property
changes. |
static String | ROLLOVER_ICON_CHANGED_PROPERTY
Fired in a PropertyChangeEvent when the "rolloverIcon" property changes. |
static String | ROLLOVER_SELECTED_ICON_CHANGED_PROPERTY
Fired in a PropertyChangeEvent when the "rolloverSelectedIcon" property
changes. |
static String | SELECTED_ICON_CHANGED_PROPERTY
Fired in a PropertyChangeEvent when the "selectedIcon" property changes. |
static String | TEXT_CHANGED_PROPERTY Fired in a PropertyChangeEvent when the "text" property changes. |
static String | VERTICAL_ALIGNMENT_CHANGED_PROPERTY
Fired in a PropertyChangeEvent when the "verticalAlignment" property
changes. |
static String | VERTICAL_TEXT_POSITION_CHANGED_PROPERTY
Fired in a PropertyChangeEvent when the "verticalTextPosition" property
changes. |
Constructor Summary | |
---|---|
AbstractButton()
Creates a new AbstractButton object. |
Method Summary | |
---|---|
void | addActionListener(ActionListener l)
Adds an ActionListener to the button's listener list. |
void | addChangeListener(ChangeListener l)
Adds a ChangeListener to the button's listener list. |
protected void | addImpl(Component comp, Object constraints, int index)
Adds the specified component to this AbstractButton. |
void | addItemListener(ItemListener l)
Adds an ItemListener to the button's listener list. |
protected int | checkHorizontalKey(int key, String exception)
Verifies that a particular key is one of the valid constants used for
describing horizontal alignment and positioning. |
protected int | checkVerticalKey(int key, String exception)
Verifies that a particular key is one of the valid constants used for
describing vertical alignment and positioning. |
protected void | configurePropertiesFromAction(Action a)
Configure various properties of the button by reading properties
of an {@link Action}. |
protected ActionListener | createActionListener() A factory method which should return an {@link ActionListener} that propagates events from the button's {@link ButtonModel} to any of the button's ActionListeners. |
protected PropertyChangeListener | createActionPropertyChangeListener(Action a) A factory method which should return a {@link PropertyChangeListener} that accepts changes to the specified {@link Action} and reconfigure the {@link AbstractButton}, by default using the {@link #configurePropertiesFromAction} method. The button calls this method whenever a new Action is assigned to
the button's "action" property, via {@link #setAction}, and stores the
resulting PropertyChangeListener in its
|
protected ChangeListener | createChangeListener() Factory method which creates a {@link ChangeListener}, used to subscribe to ChangeEvents from the button's model. |
protected ItemListener | createItemListener() Factory method which creates a {@link ItemListener}, used to subscribe to ItemEvents from the button's model. |
void | doClick()
Programmatically perform a "click" on the button: arming, pressing,
waiting, un-pressing, and disarming the model. |
void | doClick(int pressTime)
Programmatically perform a "click" on the button: arming, pressing,
waiting, un-pressing, and disarming the model.
|
protected void | fireActionPerformed(ActionEvent e)
Calls {@link ActionListener#actionPerformed} on each {@link
ActionListener} in the button's listener list.
|
protected void | fireItemStateChanged(ItemEvent e)
Calls {@link ItemListener#itemStateChanged} on each ItemListener in
the button's listener list.
|
protected void | fireStateChanged()
Calls {@link ChangeListener#stateChanged} on each {@link ChangeListener}
in the button's listener list. |
Action | getAction()
Get the value of the "action" property.
|
String | getActionCommand() Returns the action command string for this button's model. If the action command was set to |
ActionListener[] | getActionListeners()
Returns all added ActionListener objects.
|
ChangeListener[] | getChangeListeners()
Returns all added ChangeListener objects.
|
Icon | getDisabledIcon()
Return the button's "disabledIcon" property. |
Icon | getDisabledSelectedIcon()
Return the button's disabled selected icon. |
int | getDisplayedMnemonicIndex()
Get the button's mnemonic index, which is an offset into the button's
"text" property. |
int | getHorizontalAlignment()
Set the horizontal alignment of the button's text and icon. |
int | getHorizontalTextPosition()
Get the horizontal position of the button's text relative to its
icon. |
Icon | getIcon()
Return the button's default "icon" property.
|
int | getIconTextGap()
Get the value of the {@link #iconTextGap} property.
|
ItemListener[] | getItemListeners()
Returns all added ItemListener objects.
|
String | getLabel()
Return the button's "label" property. |
Insets | getMargin()
Return the button's "margin" property, which is an {@link Insets} object
describing the distance between the button's border and its text and
icon.
|
int | getMnemonic()
Get the current keyboard mnemonic value. |
ButtonModel | getModel()
Get the model the button is currently using.
|
long | getMultiClickThreshhold()
Returns the current time in milliseconds in which clicks gets coalesced
into a single ActionEvent .
|
Icon | getPressedIcon()
Return the button's "pressedIcon" property. |
Icon | getRolloverIcon()
Return the button's rollover icon. |
Icon | getRolloverSelectedIcon()
Return the button's rollover selected icon. |
Icon | getSelectedIcon()
Return the button's selected icon. |
Object[] | getSelectedObjects()
Returns an single-element array containing the "text" property of the
button if the "selected" property of the button's model is
true , otherwise returns null .
|
String | getText()
Return the button's "text" property. |
ButtonUI | getUI()
Set the "UI" property of the button, which is a look and feel class
responsible for handling the button's input events and painting it.
|
int | getVerticalAlignment()
Get the vertical alignment of the button's text and icon. |
int | getVerticalTextPosition()
Get the vertical position of the button's text relative to its
icon. |
boolean | imageUpdate(Image img, int infoflags, int x, int y, int w, int h)
Called when image data becomes available for one of the button's icons.
|
protected void | init(String text, Icon icon) |
boolean | isBorderPainted()
Set the value of the "borderPainted" property. |
boolean | isContentAreaFilled()
Returns the value of the button's "contentAreaFilled" property. |
boolean | isFocusPainted()
Return the button's "paintFocus" property. |
boolean | isRolloverEnabled()
Returns whether or not rollover icon changes are enabled on the
button.
|
boolean | isSelected()
Get the value of the button's "selected" property. |
protected void | paintBorder(Graphics g)
Paints the button's border, if the button's "borderPainted" property is
true , by out calling to the button's look and feel class.
|
protected String | paramString()
Returns a string, used only for debugging, which identifies or somehow
represents this button. |
void | removeActionListener(ActionListener l)
Removes an ActionListener from the button's listener list.
|
void | removeChangeListener(ChangeListener l)
Removes a ChangeListener from the button's listener list.
|
void | removeItemListener(ItemListener l)
Removes an ItemListener from the button's listener list.
|
void | setAction(Action a) Set the button's "action" property, subscribing the new action to the button, as an ActionListener, if it is not already subscribed. |
void | setActionCommand(String actionCommand)
Sets the action command string for this button's model.
|
void | setBorderPainted(boolean b)
Set the value of the "borderPainted" property. |
void | setContentAreaFilled(boolean b)
Sets the value of the button's "contentAreaFilled" property. |
void | setDisabledIcon(Icon d)
Set the button's "disabledIcon" property. |
void | setDisabledSelectedIcon(Icon icon)
Set the button's disabled selected icon. |
void | setDisplayedMnemonicIndex(int index)
Sets the button's mnemonic index. |
void | setEnabled(boolean b)
Enables or disables the button. |
void | setFocusPainted(boolean p)
Set the button's "paintFocus" property. |
void | setHorizontalAlignment(int a)
Set the horizontal alignment of the button's text and icon. |
void | setHorizontalTextPosition(int t)
Set the horizontal position of the button's text relative to its
icon. |
void | setIcon(Icon i)
Set the button's default "icon" property. |
void | setIconTextGap(int i)
Set the value of the {@link #iconTextGap} property.
|
void | setLabel(String label)
Set the button's "label" property. |
void | setLayout(LayoutManager layout)
Sets a layout manager on this AbstractButton. |
void | setMargin(Insets m)
Set the button's "margin" property, which is an {@link Insets} object
describing the distance between the button's border and its text and
icon.
|
void | setMnemonic(char mne)
Set the current keyboard mnemonic value. |
void | setMnemonic(int mne)
Set the current keyboard mnemonic value. |
void | setModel(ButtonModel newModel)
Set the model the button is currently using. |
void | setMultiClickThreshhold(long threshhold)
Sets the time in milliseconds in which clicks gets coalesced into a single
ActionEvent .
|
void | setPressedIcon(Icon pressedIcon)
Set the button's "pressedIcon" property. |
void | setRolloverEnabled(boolean r)
Set the "rolloverEnabled" property. |
void | setRolloverIcon(Icon r)
Set the button's rollover icon and sets the rolloverEnabled
property to true . |
void | setRolloverSelectedIcon(Icon r)
Set the button's rollover selected icon and sets the
rolloverEnabled property to true . |
void | setSelected(boolean s)
Set the value of the button's "selected" property. |
void | setSelectedIcon(Icon s)
Set the button's selected icon. |
void | setText(String t)
Set the button's "text" property. |
void | setUI(ButtonUI ui)
Set the "UI" property of the button, which is a look and feel class
responsible for handling the button's input events and painting it.
|
void | setVerticalAlignment(int a)
Set the vertical alignment of the button's text and icon. |
void | setVerticalTextPosition(int t)
Set the vertical position of the button's text relative to its
icon. |
void | updateUI()
Set the "UI" property to a class constructed, via the {@link
UIManager}, from the current look and feel. |
super(); init(text, icon);The {@link #init(String, Icon)} method is not called automatically by this constructor.
See Also: AbstractButton
Parameters: l The new listener to add
Parameters: l The new listener to add
Parameters: comp the component to be added constraints constraints for the layout manager index the index at which the component is added
Since: 1.5
Parameters: l The new listener to add
RIGHT
, LEFT
, CENTER
,
LEADING
or TRAILING
.
Parameters: key The key to check exception A message to include in an IllegalArgumentException
Returns: the value of key
Throws: IllegalArgumentException If key is not one of the valid constants
See Also: AbstractButton AbstractButton
TOP
,
BOTTOM
or CENTER
.
Parameters: key The key to check exception A message to include in an IllegalArgumentException
Returns: the value of key
Throws: IllegalArgumentException If key is not one of the valid constants
See Also: AbstractButton AbstractButton
Action keyed property | AbstractButton property |
---|---|
NAME | text |
SMALL_ICON | icon |
SHORT_DESCRIPTION | toolTipText |
MNEMONIC_KEY | mnemonic |
ACTION_COMMAND_KEY | actionCommand |
In addition, this method always sets the button's "enabled" property to the value of the Action's "enabled" property.
If the provided Action is null
, the text, icon, and
toolTipText properties of the button are set to null
, and
the "enabled" property is set to true
; the mnemonic and
actionCommand properties are unchanged.
Parameters: a An Action to configure the button from
A factory method which should return an {@link ActionListener} that propagates events from the button's {@link ButtonModel} to any of the button's ActionListeners. By default, this is an inner class which calls {@link AbstractButton#fireActionPerformed} with a modified copy of the incoming model {@link ActionEvent}.
The button calls this method during construction, stores the
resulting ActionListener in its actionListener
member
field, and subscribes it to the button's model. If the button's model
is changed, this listener is unsubscribed from the old model and
subscribed to the new one.
Returns: A new ActionListener
A factory method which should return a {@link PropertyChangeListener} that accepts changes to the specified {@link Action} and reconfigure the {@link AbstractButton}, by default using the {@link #configurePropertiesFromAction} method.
The button calls this method whenever a new Action is assigned to
the button's "action" property, via {@link #setAction}, and stores the
resulting PropertyChangeListener in its
actionPropertyChangeListener
member field. The button
then subscribes the listener to the button's new action. If the
button's action is changed subsequently, the listener is unsubscribed
from the old action and subscribed to the new one.
Parameters: a The Action which will be listened to, and which should be the same as the source of any PropertyChangeEvents received by the new listener returned from this method.
Returns: A new PropertyChangeListener
Factory method which creates a {@link ChangeListener}, used to subscribe to ChangeEvents from the button's model. Subclasses of AbstractButton may wish to override the listener used to subscribe to such ChangeEvents. By default, the listener just propagates the {@link ChangeEvent} to the button's ChangeListeners, via the {@link AbstractButton#fireStateChanged} method.
The button calls this method during construction, stores the
resulting ChangeListener in its changeListener
member
field, and subscribes it to the button's model. If the button's model
is changed, this listener is unsubscribed from the old model and
subscribed to the new one.
Returns: The new ChangeListener
Factory method which creates a {@link ItemListener}, used to subscribe to ItemEvents from the button's model. Subclasses of AbstractButton may wish to override the listener used to subscribe to such ItemEvents. By default, the listener just propagates the {@link ItemEvent} to the button's ItemListeners, via the {@link AbstractButton#fireItemStateChanged} method.
The button calls this method during construction, stores the
resulting ItemListener in its changeListener
member
field, and subscribes it to the button's model. If the button's model
is changed, this listener is unsubscribed from the old model and
subscribed to the new one.
Note that ItemEvents are only generated from the button's model when the model's selected property changes. If you want to subscribe to other properties of the model, you must subscribe to ChangeEvents.
Returns: The new ItemListener
Parameters: pressTime The number of milliseconds to wait in the pressed state
Parameters: e The event signifying that the button's model was clicked
Parameters: e The event signifying that the button's model changed state
Returns: The current value of the "action" property
Returns the action command string for this button's model.
If the action command was set to null
, the button's
text (label) is returned instead.
Returns: The current action command string from the button's model
ActionListener
objects.
Returns: an array of listeners
Since: 1.4
ChangeListener
objects.
Returns: an array of listeners
Since: 1.4
false
. This property may be
null
, in which case an icon is constructed, based on the
default icon.
Returns: The current "disabledIcon" property
false
and its "selected" property is
true
. This icon can be null
, in which case
it is synthesized from the button's selected icon.
Returns: The current disabled selected icon
Returns: An index into the button's "text" property
RIGHT
, LEFT
, CENTER
,
LEADING
or TRAILING
. The default is
CENTER
.
Returns: The current horizontal alignment
See Also: AbstractButton
RIGHT
,
LEFT
, CENTER
, LEADING
or
TRAILING
. The default is TRAILING
.
Returns: The current horizontal text position
Returns: The current default icon
Returns: The current value of the property
Since: 1.4
ItemListener
objects.
Returns: an array of listeners
Since: 1.4
Deprecated: use getText()
Returns: The current "label" property
Returns: The current "margin" property
Returns: The button's current keyboard mnemonic
Returns: The current model
ActionEvent
.
Returns: the time in milliseconds
Since: 1.4
true
. This property may be
null
, in which case the default icon is used.
Returns: The current "pressedIcon" property
true
and the mouse rolls over the button.
Returns: The current rollover icon
true
, the "selected" property of the button's model is
true
, and the mouse rolls over the button.
Returns: The current rollover selected icon
true
, and either the "rolloverEnabled" property of the
button is false
or the mouse is not currently rolled
over the button.
Returns: The current selected icon
true
, otherwise returns null
.
Returns: The button's "selected object" array
Returns: The current "text" property
Returns: The current "UI" property
CENTER
, TOP
, or
BOTTOM
. The default is CENTER
.
Returns: The current vertical alignment
See Also: AbstractButton
CENTER
,
TOP
, or BOTTOM
. The default is
CENTER
.
Returns: The current vertical position
Parameters: img The image being updated infoflags One of the constant codes in {@link ImageObserver} used to describe updated portions of an image. x X coordinate of the region being updated y Y coordinate of the region being updated w Width of the region beign updated h Height of the region being updated
Returns: true
if img is equal to the button's current icon,
otherwise false
false
, the button's look and feel class should not paint
a border for the button. The default is true
.
Returns: The current value of the property.
false
, the look and feel class should leave
the content area transparent.
Returns: The current value of the "contentAreaFilled" property
Returns: The current "paintFocus" property
Returns: The state of the "rolloverEnabled" property
Returns: The value of the property
true
, by out calling to the button's look and feel class.
Parameters: g The graphics context used to paint the border
Returns: A string representation of the button
Parameters: l The listener to remove
Parameters: l The listener to remove
Parameters: l The listener to remove
Set the button's "action" property, subscribing the new action to the button, as an ActionListener, if it is not already subscribed. The old Action, if it exists, is unsubscribed, and the button is unsubscribed from the old Action if it was previously subscribed as a PropertyChangeListener.
This method also configures several of the button's properties from the Action, by calling {@link #configurePropertiesFromAction}, and subscribes the button to the Action as a PropertyChangeListener. Subsequent changes to the Action will thus reconfigure the button automatically.
Parameters: a The new value of the "action" property
Parameters: actionCommand The new action command string to set in the button's model.
false
, the button's look and feel class should not paint
a border for the button. The default is true
.
Parameters: b The new value of the property.
false
, the look and feel class should leave
the content area transparent.
Parameters: b The new value of the "contentAreaFilled" property
false
. This property may be
null
, in which case an icon is constructed, based on the
default icon.
Parameters: d The new "disabledIcon" property
false
and its "selected" property is
true
. This icon can be null
, in which case
it is synthesized from the button's selected icon.
Parameters: icon The new disabled selected icon
Parameters: index An offset into the "text" property of the button
Throws: IllegalArgumentException If index
is not within the
range of legal offsets for the "text" property of the button.
Since: 1.4
Parameters: b Whether or not to enable the button
Parameters: p The new "paintFocus" property
RIGHT
, LEFT
, CENTER
,
LEADING
or TRAILING
. The default is
CENTER
.
Parameters: a The new horizontal alignment
Throws: IllegalArgumentException If alignment is not one of the legal constants.
See Also: getHorizontalAlignment
RIGHT
,
LEFT
, CENTER
, LEADING
or
TRAILING
. The default is TRAILING
.
Parameters: t The new horizontal text position
Throws: IllegalArgumentException If position is not one of the legal constants.
Parameters: i The new default icon
Parameters: i The new value of the property
Since: 1.4
Deprecated: use setText(text)
Parameters: label The new "label" property
Parameters: layout the layout manager to install
Since: 1.5
Parameters: m The new "margin" property
Parameters: mne A new mnemonic to use for the button
Parameters: mne A new mnemonic to use for the button
Parameters: newModel The new model
ActionEvent
.
Parameters: threshhold the time in milliseconds
Since: 1.4
true
. This property may be
null
, in which case the default icon is used.
Parameters: pressedIcon The new "pressedIcon" property
Parameters: r Whether or not to enable rollover icon changes
rolloverEnabled
property to true
. The look and feel class should
paint this icon when the "rolloverEnabled" property of the button is
true
and the mouse rolls over the button.
Parameters: r The new rollover icon
rolloverEnabled
property to true
. The look and
feel class should paint this icon when the "rolloverEnabled" property of
the button is true
, the "selected" property of the button's
model is true
, and the mouse rolls over the button.
Parameters: r The new rollover selected icon.
Parameters: s New value for the property
true
, and either the "rolloverEnabled" property of the
button is false
or the mouse is not currently rolled
over the button.
Parameters: s The new selected icon
Parameters: t The new "text" property
Parameters: ui The new "UI" property
CENTER
, TOP
, or
BOTTOM
. The default is CENTER
.
Parameters: a The new vertical alignment
Throws: IllegalArgumentException If alignment is not one of the legal constants.
See Also: getVerticalAlignment
CENTER
,
TOP
, or BOTTOM
. The default is
CENTER
.
Parameters: t The new vertical position
Throws: IllegalArgumentException If position is not one of the legal constants.