日期:2014-05-20  浏览次数:20780 次

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


------解决方案--------------------
呵呵,你得自己继承一个JButton,我以前做过这个东西,基本是自己覆盖paint方法画了一个,不过建议你去网上找找现成的代码片段修改一下。
------解决方案--------------------
Swing不是有JToolBar.按需要应用啊
------解决方案--------------------
JToolBar只是个Button的容器,这个问题的重点在于楼主的button,直接用JButton弄几个icon上去的效果很恶心,我以前试过。
------解决方案--------------------
Eclipse的workbench
------解决方案--------------------
Java code
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);

    }

}