Java Tutorial/Swing/JToolBar
Содержание
- 1 A Complete JToolBar Usage Example
- 2 Adding separator for JToolBar
- 3 Add various buttons to the toolbar
- 4 Create a vertical toolbar
- 5 Customizing JToolBar Look and Feel
- 6 Customizing Tool Bars
- 7 Determining When a Floatable JToolBar Container Changes Orientation
- 8 Highlighting Buttons in a JToolbar Container While Under the Cursor
- 9 JToolbar: Toolbars provide a quick access to the most frequently used commands.
- 10 Preventing a JToolbar Container from Floating
- 11 Swing ToolBar with Image button
- 12 This class represents a separator for the toolbar buttons.
- 13 ToolBar button
- 14 Toolbar with CheckBox
A Complete JToolBar Usage Example
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
public class ToolBarSample {
public static void main(final String args[]) {
JFrame frame = new JFrame("JToolBar Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JToolBar toolbar = new JToolBar();
toolbar.setRollover(true);
JButton button = new JButton("button");
toolbar.add(button);
toolbar.addSeparator();
toolbar.add(new JButton("button 2"));
toolbar.add(new JComboBox(new String[]{"A","B","C"}));
Container contentPane = frame.getContentPane();
contentPane.add(toolbar, BorderLayout.NORTH);
JTextArea textArea = new JTextArea();
JScrollPane pane = new JScrollPane(textArea);
contentPane.add(pane, BorderLayout.CENTER);
frame.setSize(350, 150);
frame.setVisible(true);
}
}
Adding separator for JToolBar
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JToolBar;
public class AddingJToolBarSepraratorJFrame {
public static void main(String[] a) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JToolBar toolBar = new JToolBar("Still draggable");
toolBar.setFloatable(false);
toolBar.setRollover(true);
toolBar.add(new JButton("New"));
toolBar.addSeparator();
toolBar.add(new JButton("Open"));
frame.add(toolBar, "North");
frame.setSize(300, 200);
frame.setVisible(true);
}
}
Add various buttons to the toolbar
import java.awt.Insets;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JToggleButton;
import javax.swing.JToolBar;
public class Main {
public static void main(String[] argv) throws Exception {
JToolBar toolbar = new JToolBar();
ImageIcon icon = new ImageIcon("icon.gif");
Action action = new AbstractAction("Button Label", icon) {
public void actionPerformed(ActionEvent evt) {
}
};
JButton c1 = new JButton(action);
c1.setText(null);
c1.setMargin(new Insets(0, 0, 0, 0));
toolbar.add(c1);
JToggleButton c2 = new JToggleButton(action);
c2.setText(null);
c2.setMargin(new Insets(0, 0, 0, 0));
toolbar.add(c2);
JComboBox c3 = new JComboBox(new String[] { "A", "B", "C" });
c3.setPrototypeDisplayValue("XXXXXXXX"); // Set a desired width
c3.setMaximumSize(c3.getMinimumSize());
toolbar.add(c3);
}
}
Create a vertical toolbar
import javax.swing.JToolBar;
public class Main {
public static void main(String[] argv) throws Exception {
JToolBar toolbar = new JToolBar(null, JToolBar.VERTICAL);
// Get current orientation
int orient = toolbar.getOrientation();
}
}
Customizing JToolBar Look and Feel
Property StringObject TypeToolBar.actionMapActionMapToolBar.ancestorInputMapInputMapToolBar.backgroundColorToolBar.borderBorderToolBar.borderColorColorToolBar.darkShadowColorToolBar.dockingBackgroundColorToolBar.dockingForegroundColorToolBar.floatingBackgroundColorToolBar.floatingForegroundColorToolBar.fontFontToolBar.foregroundColorToolBar.handleIconIconToolBar.highlightColorToolBar.isRolloverBooleanToolBar.lightColorToolBar.nonrolloverBorderBorderToolBar.rolloverBorderBorderToolBar.separatorSizeDimensionToolBar.shadowColorToolBarSeparatorUIStringToolBarUIString
Customizing Tool Bars
- Using setFloatable(false) to make a tool bar immovable.
- Using setRollover(true) to make the edges of the buttons invisible when mouse pointer is out.
- Adding a separator to a tool bar.
- Adding a non-button component to a tool bar.
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JToolBar;
public class AddintJToolBarToJFrame {
public static void main(String[] a) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JToolBar toolBar = new JToolBar("Still draggable");
toolBar.setFloatable(false);
toolBar.setRollover(true);
toolBar.add(new JButton("New"));
frame.add(toolBar, "North");
frame.setSize(300, 200);
frame.setVisible(true);
}
}
Determining When a Floatable JToolBar Container Changes Orientation
import javax.swing.JToolBar;
public class Main {
public static void main(String[] argv) throws Exception {
JToolBar toolbar = new JToolBar();
toolbar.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
String propName = evt.getPropertyName();
if ("orientation".equals(propName)) {
Integer oldValue = (Integer) evt.getOldValue();
Integer newValue = (Integer) evt.getNewValue();
if (newValue.intValue() == JToolBar.HORIZONTAL) {
System.out.println("horizontal orientation");
} else {
System.out.println("vertical orientation");
}
}
}
});
}
}
Highlighting Buttons in a JToolbar Container While Under the Cursor
import javax.swing.JToolBar;
public class Main {
public static void main(String[] argv) throws Exception {
// Create a horizontal toolbar
JToolBar toolbar = new JToolBar();
// Get current rollover mode
boolean b = toolbar.isRollover();
// Enable rollover mode
toolbar.setRollover(true);
}
}
JToolbar: Toolbars provide a quick access to the most frequently used commands.
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JToolBar;
public class SimpleToolbar {
public static void main(String[] args) {
JFrame f = new JFrame();
JMenuBar menubar = new JMenuBar();
JMenu file = new JMenu("File");
menubar.add(file);
f.setJMenuBar(menubar);
JToolBar toolbar = new JToolBar();
ImageIcon icon = new ImageIcon("exit.png");
JButton exit = new JButton(icon);
toolbar.add(exit);
exit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
});
f.add(toolbar, BorderLayout.NORTH);
f.setSize(300, 200);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
Preventing a JToolbar Container from Floating
import javax.swing.JToolBar;
public class Main {
public static void main(String[] argv) throws Exception {
// Create a horizontal toolbar
JToolBar toolbar = new JToolBar();
// Get current floatability
boolean b = toolbar.isFloatable();
// Disable floatability
toolbar.setFloatable(false);
}
}
Swing ToolBar with Image button
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JToolBar;
public class SwingBar extends JFrame {
Container frameContainer;
JToolBar toolBar = new JToolBar();
String[] iconFiles = { "new.gif", "open.gif", "save.gif", "cut.gif", "copy.gif", "paste.gif" };
String[] buttonLabels = { "New", "Open", "Save", "Cut", "Copy", "Paste" };
ImageIcon[] icons = new ImageIcon[iconFiles.length];
JButton[] buttons = new JButton[buttonLabels.length];
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("File");
JMenuItem fileExit = new JMenuItem("Exit");
public SwingBar() {
fileMenu.add(fileExit);
menuBar.add(fileMenu);
setJMenuBar(menuBar);
frameContainer = getContentPane();
frameContainer.setLayout(new BorderLayout());
for (int i = 0; i < buttonLabels.length; ++i) {
icons[i] = new ImageIcon(iconFiles[i]);
buttons[i] = new JButton(icons[i]);
buttons[i].setToolTipText(buttonLabels[i]);
if (i == 3)
toolBar.addSeparator();
toolBar.add(buttons[i]);
}
frameContainer.add("North", toolBar);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fileExit.addActionListener(new MenuItemHandler());
setSize(500, 500);
setVisible(true);
}
public static void main(String[] args) {
SwingBar app = new SwingBar();
}
public class MenuItemHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand();
if (cmd.equals("Exit"))
System.exit(0);
}
}
}
This class represents a separator for the toolbar buttons.
/*
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JComponent;
/**
* This class represents a separator for the toolbar buttons.
*
* @author
* @version $Id: JToolbarSeparator.java 475477 2006-11-15 22:44:28Z cam $
*/
public class JToolbarSeparator extends JComponent {
/**
* Creates a new JToolbarSeparator object.
*/
public JToolbarSeparator() {
setMaximumSize(new Dimension(15, Integer.MAX_VALUE));
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Dimension size = getSize();
int pos = size.width / 2;
g.setColor(Color.gray);
g.drawLine(pos, 3, pos, size.height - 5);
g.drawLine(pos, 2, pos + 1, 2);
g.setColor(Color.white);
g.drawLine(pos + 1, 3, pos + 1, size.height - 5);
g.drawLine(pos, size.height - 4, pos + 1, size.height - 4);
}
}
ToolBar button
//The contents of this file are subject to the Mozilla Public License Version 1.1
//(the "License"); you may not use this file except in compliance with the
//License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
//
//Software distributed under the License is distributed on an "AS IS" basis,
//WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
//for the specific language governing rights and
//limitations under the License.
//
//The Original Code is "The Columba Project"
//
//The Initial Developers of the Original Code are Frederik Dietz and Timo Stich.
//Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2006.
//
//All Rights Reserved.
import java.awt.Insets;
import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.JButton;
/**
* ToolBar button.
*
* @author Frederik Dietz
*/
@SuppressWarnings("serial")
public class ToolBarButton extends JButton {
public ToolBarButton(String text, Icon icon) {
super(text, icon);
initButton();
}
public ToolBarButton() {
super();
initButton();
}
public ToolBarButton(Action action) {
super(action);
initButton();
}
private void initButton() {
setRolloverEnabled(true);
setRequestFocusEnabled(false);
setMargin(new Insets(1, 1, 1, 1));
putClientProperty("JToolBar.isRollover", Boolean.TRUE);
}
public boolean isFocusTraversable() {
return isRequestFocusEnabled();
}
/**
* @see javax.swing.JButton#updateUI()
*/
public void updateUI() {
super.updateUI();
setRolloverEnabled(true);
putClientProperty("JToolBar.isRollover", Boolean.TRUE);
}
}
Toolbar with CheckBox
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JToolBar;
public class ToolBarwithCheckBox extends JFrame {
public static void main(String[] args) {
ToolBarwithCheckBox that = new ToolBarwithCheckBox();
that.setVisible(true);
}
public ToolBarwithCheckBox() {
setSize(450, 350);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().add(new ToolbarPanel(), BorderLayout.SOUTH);
}
}
class ToolbarPanel extends JPanel {
public ToolbarPanel() {
setLayout(new BorderLayout());
JToolBar toolbar = new JToolBar();
for (int i = 1; i < 4; i++) {
JCheckBox cbox = new JCheckBox("Checkbox #" + i);
toolbar.add(cbox);
cbox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JCheckBox source = (JCheckBox) (e.getSource());
System.out.println("Toolbar " + source.getText());
}
});
}
add(toolbar, BorderLayout.NORTH);
}
}