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

时间:2014-06-14 23:09:24   收藏:0   阅读:377

第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();
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

第12章-Swing编程 --- 使用JToolBar创建工具条,布布扣,bubuko.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!