import javax.swing.JToolBar;

import javax.swing.JButton;

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import javax.swing.JTextArea;

import javax.swing.JScrollPane;

import javax.swing.JPanel;

import java.net.URL;

import java.awt.BorderLayout;

import java.awt.Dimension;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

public class ToolBarDemo extends JPanel

implements ActionListener {

protected JTextArea textArea;

protected String newline = "\n";

static final private String PREVIOUS = "前一个";

static final private String UP = "上一个";

static final private String NEXT = "下一个";

public ToolBarDemo() {

super(new BorderLayout());

//创建工具栏

JToolBar toolBar = new JToolBar("可拖曳的");

addButtons(toolBar);

//建立一个文本域作为输出用．设为５行３０列

textArea = new JTextArea(5, 30);

textArea.setEditable(false);

JScrollPane scrollPane = new JScrollPane(textArea);

//摆出主要的面板

setPreferredSize(new Dimension(450, 130));

add(toolBar, BorderLayout.PAGE_START);

add(scrollPane, BorderLayout.CENTER);

}

protected void addButtons(JToolBar toolBar) {

JButton button = null;

//第一个按钮

button = makeNavigationButton("Back24", PREVIOUS,

"回到先前的内容",

"前一个");

toolBar.add(button);

//第二个按钮

button = makeNavigationButton("Up24", UP,

"到上一层内容",

"上一个");

toolBar.add(button);

//第三个按钮

button = makeNavigationButton("Forward24", NEXT,

"向前倒下一个内容",

"下一个");

toolBar.add(button);

}

protected JButton makeNavigationButton(String imageName,

String actionCommand,

String toolTipText,

String altText) {

//查找图片 Look for the image.

String imgLocation = "toolbarButtonGraphics/navigation/"

+ imageName

+ ".gif";

URL imageURL = ToolBarDemo.class.getResource(imgLocation);

//创建并初始化按钮

JButton button = new JButton();

button.setActionCommand(actionCommand);

button.setToolTipText(toolTipText);

button.addActionListener(this);

if (imageURL != null) { //图片找到

button.setIcon(new ImageIcon(imageURL, altText));

} else { //图片没有找到

button.setText(altText);

System.err.println("Resource not found: "

+ imgLocation);

}

return button;

}

public void actionPerformed(ActionEvent e) {

String cmd = e.getActionCommand();

String description = null;

// 控制每个按钮

if (PREVIOUS.equals(cmd)) { //第一个按钮被点击

description = "带你到先前的内容.";

} else if (UP.equals(cmd)) { // 第二个按钮被点击

description = "带你到上一层内容.";

} else if (NEXT.equals(cmd)) { // 第三个按钮被点击

description = "带你到下一层内容.";

}

displayResult("如果这时一个真正的应用，它将"

+ description);

}

protected void displayResult(String actionDescription) {

textArea.append(actionDescription + newline);

textArea.setCaretPosition(textArea.getDocument().getLength());

}

/**

* 创建并显示这个 GUI，由事件分配线程来处理。

*/

private static void createAndShowGUI() {

//创建并设置窗口

JFrame frame = new JFrame("ToolBarDemo");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//创建并设置 content 面板.

ToolBarDemo newContentPane = new ToolBarDemo();

newContentPane.setOpaque(true); //设为不透明

frame.setContentPane(newContentPane);

//显示这个窗口

frame.pack();

frame.setVisible(true);

}

public static void main(String[] args) {

//给事件分配线程一个作业：创建并显示这个 GUI

javax.swing.SwingUtilities.invokeLater(new Runnable() {

public void run() {

createAndShowGUI();

}

});

}

}