|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.AbstractButton
javax.swing.JButton
org.jdesktop.swingx.JXButton
public class JXButton
A Painter
enabled subclass of JButton
.
This class supports setting the foreground and background painters of the button separately. By default,
JXButton
creates and installs two Painter
s; one for the foreground, and one
for the background. These default Painter
s delegate to the installed UI delegate.
For example, if you wanted to blur just the text on the button, and let everything else be handled by the UI delegate for your look and feel, then you could:
JXButton b = new JXButton("Execute");
AbstractPainter fgPainter = (AbstractPainter)b.getForegroundPainter();
StackBlurFilter filter = new StackBlurFilter();
fgPainter.setFilters(filter);
If either the foreground painter or the background painter is set,
then super.paintComponent() is not called. By setting both the foreground and background
painters to null, you get exactly the same painting behavior as JButton.
By contrast, the Painters
installed by default will delegate to the UI delegate,
thus achieving the same look as a typical JButton, but at the cost of some additional painting
overhead.
/*
* $Id: JXButtonDemo.java,v 1.3 2007/09/19 13:58:36 rah003 Exp $
*
* Copyright 2006 Sun Microsystems, Inc., 4150 Network Circle,
* Santa Clara, California 95054, U.S.A. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
package org.jdesktop.swingx;
import org.jdesktop.swingx.painter.AbstractPainter;
import org.jdesktop.swingx.image.StackBlurFilter;
import javax.swing.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImageOp;
/**
* Simple demo
*
*/
public class JXButtonDemo extends JPanel {
public JXButtonDemo() {
//simple demo that blurs the button's text
final JXButton b = new JXButton("Execute");
final AbstractPainter fgPainter = (AbstractPainter)b.getForegroundPainter();
final StackBlurFilter filter = new StackBlurFilter();
fgPainter.setFilters(filter);
b.addMouseListener(new MouseAdapter() {
boolean entered = false;
public void mouseEntered(MouseEvent mouseEvent) {
if (!entered) {
fgPainter.setFilters(new BufferedImageOp[0]);
b.repaint();
entered = true;
}
}
public void mouseExited(MouseEvent mouseEvent) {
if (entered) {
fgPainter.setFilters(filter);
b.repaint();
entered = false;
}
}
});
add(b);
}
public static void main(String[] args) {
JXFrame f = new JXFrame("JXButton Demo", true);
f.add(new JXButtonDemo());
f.setSize(400, 300);
f.setStartPosition(JXFrame.StartPosition.CenterInScreen);
f.setVisible(true);
}
}
Nested Class Summary |
---|
Nested classes/interfaces inherited from class javax.swing.JButton |
---|
JButton.AccessibleJButton |
Nested classes/interfaces inherited from class javax.swing.AbstractButton |
---|
AbstractButton.AccessibleAbstractButton, AbstractButton.ButtonChangeListener |
Nested classes/interfaces inherited from class javax.swing.JComponent |
---|
JComponent.AccessibleJComponent |
Nested classes/interfaces inherited from class java.awt.Container |
---|
Container.AccessibleAWTContainer |
Nested classes/interfaces inherited from class java.awt.Component |
---|
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy |
Field Summary |
---|
Fields inherited from class javax.swing.JComponent |
---|
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW |
Fields inherited from class java.awt.Component |
---|
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT |
Fields inherited from interface javax.swing.SwingConstants |
---|
BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST |
Fields inherited from interface java.awt.image.ImageObserver |
---|
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH |
Constructor Summary | |
---|---|
JXButton()
Creates a new instance of JXButton |
|
JXButton(Action a)
|
|
JXButton(Icon icon)
|
|
JXButton(String text)
|
|
JXButton(String text,
Icon icon)
|
Method Summary | |
---|---|
Painter<JXButton> |
getBackgroundPainter()
|
Painter<JXButton> |
getForegroundPainter()
|
String |
getText()
Returns the button's text. |
protected void |
init(String text,
Icon icon)
|
boolean |
isBorderPainted()
Gets the borderPainted property. |
boolean |
isContentAreaFilled()
Gets the contentAreaFilled property. |
boolean |
isOpaque()
Returns true if this component is completely opaque. |
boolean |
isPaintBorderInsets()
Returns true if the background painter should paint where the border is or false if it should only paint inside the border. |
protected void |
paintComponent(Graphics g)
Calls the UI delegate's paint method, if the UI delegate is non- null . |
void |
repaint()
Repaints this component. |
void |
setBackgroundPainter(Painter<JXButton> p)
|
void |
setBorderPainted(boolean b)
Sets the borderPainted property. |
void |
setContentAreaFilled(boolean b)
Sets the contentAreaFilled property. |
void |
setForegroundPainter(Painter<JXButton> p)
|
void |
setPaintBorderInsets(boolean paintBorderInsets)
Sets the paintBorderInsets property. |
protected void |
setPainting(boolean b)
|
void |
setText(String text)
Sets the button's text. |
Methods inherited from class javax.swing.JButton |
---|
configurePropertiesFromAction, getAccessibleContext, getUIClassID, isDefaultButton, isDefaultCapable, paramString, removeNotify, setDefaultCapable, updateUI |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public JXButton()
public JXButton(String text)
public JXButton(Action a)
public JXButton(Icon icon)
public JXButton(String text, Icon icon)
Method Detail |
---|
protected void init(String text, Icon icon)
init
in class AbstractButton
public void setText(String text)
javax.swing.AbstractButton
setText
in class AbstractButton
text
- the string used to set the textAbstractButton.getText()
public void repaint()
java.awt.Component
If this component is a lightweight component, this method
causes a call to this component's paint
method as soon as possible. Otherwise, this method causes
a call to this component's update
method as soon
as possible.
Note: For more information on the paint mechanisms utilitized by AWT and Swing, including information on how to write the most efficient painting code, see Painting in AWT and Swing.
repaint
in class Component
Component.update(Graphics)
public String getText()
javax.swing.AbstractButton
getText
in class AbstractButton
AbstractButton.setText(java.lang.String)
public void setBorderPainted(boolean b)
javax.swing.AbstractButton
borderPainted
property.
If true
and the button has a border,
the border is painted. The default value for the
borderPainted
property is true
.
setBorderPainted
in class AbstractButton
b
- if true and border property is not null
,
the border is paintedAbstractButton.isBorderPainted()
public boolean isBorderPainted()
javax.swing.AbstractButton
borderPainted
property.
isBorderPainted
in class AbstractButton
borderPainted
propertyAbstractButton.setBorderPainted(boolean)
public void setContentAreaFilled(boolean b)
javax.swing.AbstractButton
contentAreaFilled
property.
If true
the button will paint the content
area. If you wish to have a transparent button, such as
an icon only button, for example, then you should set
this to false
. Do not call setOpaque(false)
.
The default value for the the contentAreaFilled
property is true
.
This function may cause the component's opaque property to change.
The exact behavior of calling this function varies on a component-by-component and L&F-by-L&F basis.
setContentAreaFilled
in class AbstractButton
b
- if true, the content should be filled; if false
the content area is not filledAbstractButton.isContentAreaFilled()
,
JComponent.setOpaque(boolean)
public boolean isContentAreaFilled()
javax.swing.AbstractButton
contentAreaFilled
property.
isContentAreaFilled
in class AbstractButton
contentAreaFilled
propertyAbstractButton.setContentAreaFilled(boolean)
public Painter<JXButton> getBackgroundPainter()
public void setBackgroundPainter(Painter<JXButton> p)
public Painter<JXButton> getForegroundPainter()
public void setForegroundPainter(Painter<JXButton> p)
public boolean isPaintBorderInsets()
public void setPaintBorderInsets(boolean paintBorderInsets)
public boolean isOpaque()
javax.swing.JComponent
An opaque component paints every pixel within its rectangular bounds. A non-opaque component paints only a subset of its pixels or none at all, allowing the pixels underneath it to "show through". Therefore, a component that does not fully paint its pixels provides a degree of transparency.
Subclasses that guarantee to always completely paint their contents should override this method and return true.
isOpaque
in class JComponent
JComponent.setOpaque(boolean)
protected void paintComponent(Graphics g)
javax.swing.JComponent
null
. We pass the delegate a copy of the
Graphics
object to protect the rest of the
paint code from irrevocable changes
(for example, Graphics.translate
).
If you override this in a subclass you should not make permanent
changes to the passed in Graphics
. For example, you
should not alter the clip Rectangle
or modify the
transform. If you need to do these operations you may find it
easier to create a new Graphics
from the passed in
Graphics
and manipulate it. Further, if you do not
invoker super's implementation you must honor the opaque property,
that is
if this component is opaque, you must completely fill in the background
in a non-opaque color. If you do not honor the opaque property you
will likely see visual artifacts.
The passed in Graphics
object might
have a transform other than the identify transform
installed on it. In this case, you might get
unexpected results if you cumulatively apply
another transform.
paintComponent
in class JComponent
g
- the Graphics
object to protectJComponent.paint(java.awt.Graphics)
,
ComponentUI
protected void setPainting(boolean b)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |