首页 > 代码库 > 第12章-Swing编程 --- 使用JToolBar创建工具条

第12章-Swing编程 --- 使用JToolBar创建工具条

第12章-Swing编程 --- 使用JToolBar创建工具条

Swing提供了JToolBar类来创建工具条,创建JToolBar对象时可以指定如下两个参数:

-->name: 该参数指定该工具条的名称.

-->orientation:该参数指定该工具条的方法.

JToolBar对象还有如下几个常用方法:

-->JButton add(Action a): 通过Action对象为JToolBar添加对应的工具按钮.

-->void addSeparator(Dimension size):向工具条中添加指定大小的分隔符.

-->void setFloatable(boolean b):设置该工具条是否可浮动,即该工具条是否可以拖动.

-->void setMargin(Insets m):设置工具条边框和工具按钮之间的页边距.

-->void setOrientation(int o):设置工具条的方向.

-->void setRollover(boolean rollover):设置此工具条的rollover状态.

下面程序举例:

 

import java.awt.BorderLayout;import java.awt.Insets;import java.awt.Toolkit;import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.DataFlavor;import java.awt.datatransfer.StringSelection;import javax.swing.AbstractAction;import javax.swing.Action;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JToolBar;public class JToolBarTest{    private JFrame jf = new JFrame("测试工具条");    private JTextArea jta = new JTextArea(6,35);    private JToolBar jtb = new JToolBar();    private JMenuBar jmb = new JMenuBar();    private JMenu edit = new JMenu("编辑");        //获取系统剪贴板    Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();        //创建 "粘贴" Action,该Action用于创建菜单项、工具按钮和普通按钮    Action pasteAction = new AbstractAction("粘贴",new ImageIcon("ico/paste.png")){        public void actionPerformed(java.awt.event.ActionEvent e)         {            //如果剪贴板中包含 stringFlavor内容            if(clipboard.isDataFlavorAvailable(DataFlavor.stringFlavor))            {                try                {                    //取出剪贴板中的stringFlavor内容                    String content = (String)clipboard.getData(DataFlavor.stringFlavor);                                        //将选中的内容替换成剪贴板中的内容                    jta.replaceRange(content, jta.getSelectionStart(), jta.getSelectionEnd());                }                catch(Exception ee)                {                    ee.printStackTrace();                }            }        };    };        //创建"复制"Action    Action copyAction = new AbstractAction("复制",new ImageIcon("ico/copy.png")){        public void actionPerformed(java.awt.event.ActionEvent e)         {            StringSelection contents = new StringSelection(jta.getSelectedText());            //将StringSelection对象放入剪贴板中            clipboard.setContents(contents, null);            //如果剪贴板中包含stringFlavor内容            if(clipboard.isDataFlavorAvailable(DataFlavor.stringFlavor))            {                //将pasteAction激活                pasteAction.setEnabled(true);            }        };    };        public void init()    {        //pasteAction默认处于不激活状态        pasteAction.setEnabled(false);        jf.add(new JScrollPane(jta));                //以Action创建按钮,并将该按钮添加到Panel中        JButton copyBn = new JButton(copyAction);        JButton pasteBn = new JButton(pasteAction);        JPanel jp = new JPanel();        jp.add(copyBn);        jp.add(pasteBn);        jf.add(jp,BorderLayout.SOUTH);                //向工具条中添加Action对象,该对象将会转换成工具按钮        jtb.add(copyAction);        jtb.addSeparator();        jtb.add(pasteAction);        //向菜单中添加Action对象,该对象将会转换成菜单项        edit.add(copyAction);        edit.add(pasteAction);        //将edit菜单添加到菜单条中        jmb.add(edit);        jf.setJMenuBar(jmb);                //设置工具条和工具按钮之间的页边距        jtb.setMargin(new Insets(20,10,5,30));        //向窗口中添加工具条        jf.add(jtb,BorderLayout.NORTH);        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        jf.pack();        jf.setVisible(true);    }        public static void main(String[] args)    {        new JToolBarTest().init();    }}