Start of Tutorial > Start of Trail > Start of Lesson |
Search
Feedback Form |
AJToolBar
is a container that groups several components -- usually buttons with icons -- into a row or column. Often, tool bars provide easy access to functionality that is also in menus. How to Use Actions describes how to provide the same functionality in menu items and tool bar buttons.The following pictures show an application that contains a tool bar above a text area.
By default, the user can drag the tool bar to a different edge of its container or out into a window of its own. The next figure shows how the application looks after the user has dragged the tool bar to the right edge of its container.
For the drag-out behavior to work correctly, the tool bar must be in a container that uses BorderLayout
. The component that the tool bar affects is generally in the center of the container. The tool bar must be the only other component in the container; it must not be in the center.The next figure shows how the application looks after the user has dragged the tool bar outside its window.
The following code implements the tool bar. You can find the entire program in
ToolBarDemo.java
. It relies on three images.
Note: If any buttons in your tool bar duplicate functionality of other components, such as menu items, then you should probably create and add the tool-bar buttons as described in How to Use Actions.
PENDING: We need to change the text and examples to reflect the fact that, whenever practical, toolbars using the Java look and feel should use the images from the Java look and feel graphics respository. Here is an example of doing so:You need to include the JLF graphics repository JAR file in the class path of the program. For example:String imgLocation = "toolbarButtonGraphics/navigation/Back24.gif"; URL imageURL = getClass().getResource(imgLocation); if (imageURL != null) { button = new JButton(new ImageIcon(imageURL)); }java -cp .;jars/jlfgr-1_0.jar ToolBarDemo [Microsoft Windows] java -cp .:jars/jlfgr-1_0.jar ToolBarDemo [UNIX]
[PENDING: The following code needs to be reworked to use add(Container)/setAction.]public ToolBarDemo() { ... JToolBar toolBar = new JToolBar(); addButtons(toolBar); ... JPanel contentPane = new JPanel(); contentPane.setLayout(new BorderLayout()); ... contentPane.add(toolBar, BorderLayout.NORTH); contentPane.add(scrollPane, BorderLayout.CENTER); ... } protected void addButtons(JToolBar toolBar) { JButton button = null; //first button button = new JButton(new ImageIcon("images/left.gif")); ... toolBar.add(button); //second button button = new JButton(new ImageIcon("images/middle.gif")); ... toolBar.add(button); //third button button = new JButton(new ImageIcon("images/right.gif")); ... toolBar.add(button); }By adding a few lines of code to the preceding example, we can demonstrate some more tool bar features:
Here is a picture of the new UI,
- Using the
setFloatable(false)
to make a tool bar immovable.- Adding a separator to a tool bar.
- Adding a non-button component to a tool bar.
You can find the entire program in ToolBarDemo2.java
. It relies on three images.Because the tool bar can no longer be dragged, it no longer has bumps at its left edge. Here's the code that turns off dragging:
The biggest visible difference is that the tool bar contains two new components, which are preceded by a blank space -- a separator. Here is the code that adds the separator:toolBar.setFloatable(false);Here is the code that adds the new components:toolBar.addSeparator();You can easily make the components in a tool bar be aligned along their tops or bottoms, instead of centered, by invoking the//fourth button button = new JButton("Another button"); ... toolBar.add(button); //fifth component is NOT a button! JTextField textField = new JTextField("A text field"); ... toolBar.add(textField);setAlignmentY
method. For example, to align the tops of all the components in a tool bar, invokesetAlignmentY(TOP_ALIGNMENT)
on each component. Similarly, you can use thesetAlignmentX
method to specify the alignment of components when the tool bar is vertical. This flexibility of layout is possible because tool bars useBoxLayout
to position their components. For more information, see How to Use BoxLayout.
The following table lists the commonly usedJToolBar
constructors and methods. Other methods you might call are listed in the API tables in The JComponent Class.
Method or Constructor Purpose JToolBar()
JToolBar(int)
JToolBar(String)
JToolBar(String, int)
Create a tool bar. The optional int parameter lets you specify the orientation; the default is HORIZONTAL
. The optionalString
parameter, introduced in 1.3, allows you to specify the title displayed for the undocked tool bar's window.Component add(Component)
Add a component to the tool bar. Version Note: Before 1.3, the only way to associate an
Action
with a toolbar button was to useJToolBar
'sadd(Action)
method to create the button and add it to the tool bar. As of 1.3, that method is no longer recommended. You can instead associate a button with anAction
using thesetAction(Action)
method.void addSeparator()
Add a separator to the end of the tool bar. void setFloatable(boolean)
boolean isFloatable()
The floatable property is true by default, to indicate that the user can drag the tool bar out into a separate window. To turn off tool bar dragging, use toolbar.setFloatable(false)
.
This table lists examples that useJToolBar
and where those examples are described.
Example Where Described Notes ToolBarDemo
This page. A basic tool bar with icon-only buttons. ToolBarDemo2
This page Demonstrates a non-floatable tool bar containing a separator and non-button components. ActionDemo
How to Use Actions Implements a tool bar using Action
objects.
Start of Tutorial > Start of Trail > Start of Lesson |
Search
Feedback Form |
Copyright 1995-2002 Sun Microsystems, Inc. All rights reserved.