用Java怎么作工具栏?
最好是工具栏用|来分隔各种工具栏图标! (这个可选)
给点提示或意见都可!

解决方案 »

  1.   

    呵呵,你得自己继承一个JButton,我以前做过这个东西,基本是自己覆盖paint方法画了一个,不过建议你去网上找找现成的代码片段修改一下。
      

  2.   

    Swing不是有JToolBar.按需要应用啊
      

  3.   

    JToolBar只是个Button的容器,这个问题的重点在于楼主的button,直接用JButton弄几个icon上去的效果很恶心,我以前试过。
      

  4.   

    import java.awt.Container;
    import java.awt.event.ActionEvent;
    import java.awt.event.InputEvent;
    import java.awt.event.KeyEvent;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;import javax.swing.AbstractAction;
    import javax.swing.Action;
    import javax.swing.ButtonGroup;
    import javax.swing.JCheckBoxMenuItem;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JPanel;
    import javax.swing.JPopupMenu;
    import javax.swing.JRadioButtonMenuItem;
    import javax.swing.JTextField;
    import javax.swing.JToolBar;
    import javax.swing.KeyStroke;public class MenuUseDemo extends JFrame { public static final int WIDTH = 250; public static final int HEIGHT = 200; private JMenuItem newItem; private JMenuItem openItem; private JMenuItem closeItem; private JMenuItem saveItem; private JMenuItem cutItem; private JMenuItem copyItem; private JMenuItem pasteItem; private JMenuItem cutItemPop; private JMenuItem copyItemPop; private JMenuItem pasteItemPop; private JRadioButtonMenuItem forwardItem; private JRadioButtonMenuItem backwardItem; private JPopupMenu popup; private JTextField myTextField; public MenuUseDemo() {
    setTitle("MenuUseDemo");
    setSize(WIDTH, HEIGHT); Container contentPane = getContentPane();
    JPanel textPanel = new JPanel(); // 创建显示菜单操作的文本区
    myTextField = new JTextField("", 20);
    textPanel.add(myTextField);
    contentPane.add(textPanel); // 创建菜单栏,并将菜单栏加入到框架中
    JMenuBar menuBar = new JMenuBar();
    setJMenuBar(menuBar); // 创建菜单及菜单项,并添加快捷键和加速器
    // “File”菜单
    JMenu fileMenu = new JMenu("File");
    // 设置菜单的快捷键
    fileMenu.setMnemonic('F'); // 新建“New”菜单项,并添加共用的事件监听器
    newItem = fileMenu.add(new ShowAction("New"));
    // 设置菜单项的加速器
    newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,
    InputEvent.CTRL_MASK));
    // 新建“Open”菜单项和监听器
    openItem = fileMenu.add(new ShowAction("Open"));
    openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
    InputEvent.CTRL_MASK));
    // 增加分隔线
    fileMenu.addSeparator();
    // 新建“Save”菜单项和监听器
    saveItem = fileMenu.add(new ShowAction("Save"));
    saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
    InputEvent.CTRL_MASK));
    // 初始设置“Save”菜单项为禁用状态
    saveItem.setEnabled(false);
    // 新建“Close”菜单项和监听器
    closeItem = fileMenu.add(new ShowAction("Close"));
    closeItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L,
    InputEvent.CTRL_MASK));
    closeItem.setEnabled(false);
    fileMenu.addSeparator();
    // 新建“Exit”菜单项和监听器
    JMenuItem exitItem = new JMenuItem("Exit", 'T');
    exitItem.addActionListener(new AbstractAction("Exit") {
    public void actionPerformed(ActionEvent event) {
    System.exit(0);
    }
    });
    exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T,
    InputEvent.CTRL_MASK));
    fileMenu.add(exitItem); // “Edit”菜单
    JMenu editMenu = new JMenu("Edit");
    // 设置菜单的快捷键
    editMenu.setMnemonic('E'); // 新建“Cut”菜单项和监听器
    cutItem = new JMenuItem("Cut", 'C');
    editMenu.add(cutItem);
    // 添加事件监听器
    cutItem.addActionListener(new ShowAction("Cut"));
    cutItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,
    InputEvent.CTRL_MASK));
    cutItem.setEnabled(false);
    // 新建“Copy”菜单项和监听器
    copyItem = new JMenuItem("Copy", 'Y');
    copyItem.addActionListener(new ShowAction("Copy"));
    copyItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y,
    InputEvent.CTRL_MASK));
    copyItem.setEnabled(false);
    // 新建“Paste”菜单项和监听器
    pasteItem = new JMenuItem("Paste", 'P');
    pasteItem.addActionListener(new ShowAction("Paste"));
    pasteItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,
    InputEvent.CTRL_MASK));
    pasteItem.setEnabled(false); editMenu.add(copyItem);
    editMenu.add(pasteItem); // “Search”菜单
    JMenu searchMenu = new JMenu("Search");
    searchMenu.setMnemonic('S'); // 创建单选按钮菜单项“Forward”和“Backward”
    ButtonGroup group = new ButtonGroup();
    forwardItem = new JRadioButtonMenuItem("Forward");
    forwardItem.addActionListener(new ShowAction("Forward"));
    forwardItem.setSelected(true);
    forwardItem.setEnabled(false); backwardItem = new JRadioButtonMenuItem("Backward");
    backwardItem.addActionListener(new ShowAction("Backward"));
    backwardItem.setEnabled(false); group.add(forwardItem);
    group.add(backwardItem);
    searchMenu.add(forwardItem);
    searchMenu.add(backwardItem); // "View"菜单
    JMenu viewMenu = new JMenu("View");
    viewMenu.setMnemonic('V');
    // 创建子菜单
    JMenu optionMenu = new JMenu("Option");
    optionMenu.setMnemonic('O');
    // 创建复选框菜单项“ToolBar”和“Status”
    JCheckBoxMenuItem toolItem = new JCheckBoxMenuItem("ToolBar");
    JCheckBoxMenuItem statusItem = new JCheckBoxMenuItem("Status");
    toolItem.addActionListener(new ShowAction("ToolBar"));
    statusItem.addActionListener(new ShowAction("Status"));
    // 将菜单项添加到子菜单中
    optionMenu.add(toolItem);
    optionMenu.add(statusItem);
    // 将子菜单添加到“View”菜单中
    viewMenu.add(optionMenu); // 将菜单加入到菜单栏中
    menuBar.add(fileMenu);
    menuBar.add(editMenu);
    menuBar.add(searchMenu);
    menuBar.add(viewMenu); // 弹出式菜单
    popup = new JPopupMenu(); // 新建弹出式菜单中的“Cut”菜单项和监听器
    cutItemPop = new JMenuItem("Cut", 'C');
    cutItemPop.addActionListener(new ShowAction("CutPop"));
    cutItemPop.setEnabled(false); // 新建弹出式菜单中的“Copy”菜单项和监听器
    copyItemPop = new JMenuItem("Copy", 'Y');
    copyItemPop.addActionListener(new ShowAction("CopyPop"));
    copyItemPop.setEnabled(false); // 新建弹出式菜单中的“Paste”菜单项和监听器
    pasteItemPop = new JMenuItem("Paste", 'P');
    pasteItemPop.addActionListener(new ShowAction("PastePop"));
    pasteItemPop.setEnabled(false); popup.add(cutItemPop);
    popup.add(copyItemPop);
    popup.add(pasteItemPop); // 实现弹出式菜单的弹出触发器
    getContentPane().addMouseListener(new MouseAdapter() {
    public void mouseReleased(MouseEvent event) {
    if (event.isPopupTrigger())
    // 指定弹出式菜单的父组件以及显示位置
    popup
    .show(event.getComponent(), event.getX(), event
    .getY());
    }
    });
    } // 菜单项的共用事件监听器
    private class ShowAction extends AbstractAction {
    public ShowAction(String name) {
    super(name);
    } public void actionPerformed(ActionEvent event) {
    // 实现菜单项的启用和禁用控制
    if (event.getSource() == newItem || event.getSource() == openItem) {
    saveItem.setEnabled(true);
    closeItem.setEnabled(true);
    cutItem.setEnabled(true);
    copyItem.setEnabled(true);
    pasteItem.setEnabled(true);
    forwardItem.setEnabled(true);
    backwardItem.setEnabled(true);
    cutItemPop.setEnabled(true);
    copyItemPop.setEnabled(true);
    pasteItemPop.setEnabled(true);
    }
    if (event.getSource() == closeItem) {
    saveItem.setEnabled(false);
    closeItem.setEnabled(false);
    cutItem.setEnabled(false);
    copyItem.setEnabled(false);
    pasteItem.setEnabled(false);
    forwardItem.setEnabled(false);
    backwardItem.setEnabled(false);
    cutItemPop.setEnabled(false);
    copyItemPop.setEnabled(false);
    pasteItemPop.setEnabled(false);
    }
    // 在文本域中显示菜单选择结果
    myTextField.setText(getValue(Action.NAME) + " selected.");
    }
    } public static void main(String[] args) {
    MenuUseDemo frame = new MenuUseDemo();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true); }}
      

  5.   

    上面是菜单使用示例,下面是工具栏使用示例.应该对你有帮助.import java.awt.BorderLayout;
    import java.awt.Dimension;
    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.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.JToolBar;public class JToolBarUseDemo extends JPanel implements ActionListener { private JTextArea textArea; private static String NEW = "new"; private static String OPEN = "open"; private static String SAVE = "save"; private static String SEARCH = "search"; public JToolBarUseDemo() {
    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, 110));
    add(toolBar, BorderLayout.PAGE_START);
    add(scrollPane, BorderLayout.CENTER);
    } protected void addButtons(JToolBar toolBar) {
    JButton button = null; // 新建按钮
    button = makeButton("New", NEW, "新建", NEW);
    toolBar.add(button);
    // 打开按钮
    button = makeButton("Open", OPEN, "打开", OPEN);
    toolBar.add(button);
    // 保存按钮
    button = makeButton("Save", SAVE, "保存", SAVE);
    toolBar.add(button);
    // 搜索按钮
    button = makeButton("Search", SEARCH, "搜索", SEARCH);
    toolBar.add(button);
    } protected JButton makeButton(String imageName, String actionCommand,
    String toolTipText, String altText) { String imgLocation = "chapter11\\" + imageName + ".gif"; // 创建并初始化按钮
    JButton button = new JButton();
    // 按钮触发的命令字符
    button.setActionCommand(actionCommand);
    // 按钮提示信息
    button.setToolTipText(toolTipText);
    // 给按钮添加事件
    button.addActionListener(this); button.setIcon(new ImageIcon(imgLocation)); return button;
    } // 实现事件监听方法。获取点击的工具。
    public void actionPerformed(ActionEvent e) {
    String cmd = e.getActionCommand();
    String description = null; // 处理工具按钮
    if (NEW.equals(cmd)) {
    description = "<" + NEW + ">工具按钮";
    } else if (OPEN.equals(cmd)) {
    description = "<" + OPEN + ">工具按钮";
    } else if (SAVE.equals(cmd)) {
    description = "<" + SAVE + ">工具按钮";
    } else if (SEARCH.equals(cmd)) {
    description = "<" + SEARCH + ">工具按钮";
    }
    // 向文本域中添加信息
    textArea.append(description + "\n");
    } public static void main(String[] args) {
    // 设置窗体的属性
    JFrame frame = new JFrame("JToolBarUseDemo");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    // 创建面板
    JToolBarUseDemo newPane = new JToolBarUseDemo();
    newPane.setOpaque(true);
    frame.setContentPane(newPane);
    // 显示窗体
    frame.pack();
    frame.setVisible(true);
    }}
      

  6.   

    现在图标按钮功能已经实现,只是外观还是很难看,它把JMenuBar和JToolBar连在一起了。我想把JMenuBar和JToolBar之间用一个分界线来分开,怎么办?