Java Swing JToolBar:工具栏组件

本文介绍如何使用Java Swing的JToolBar类创建工具栏,并展示如何添加按钮及图片资源。通过实例代码展示了如何设置按钮的动作指令、提示信息,以及在图片缺失时显示替代文本。此外,还展示了如何将工具栏与JScrollPane和JTextArea结合使用以显示操作反馈。
摘要由CSDN通过智能技术生成

工具栏提供了一个用来显示常用按钮和操作的组件。它可以把任意类型的组件附加到工具条上,但是通常是增加按钮。工具栏 JToolBar 类的常用构造方法如表 1 所示。

构造方法说明
JToolBar()创建新的工具栏,默认的方向为 HORIZONTAL
JToolBar(int orientation)创建具有指定 orientation 的新工具栏
JToolBar(String name)创建一个具有指定 name 的新工具栏
JToolBar(String name,int orientation)创建一个具有指定 name 和 orientation 的新工具栏

与 JMenuBar 不一样,JToolBar 对象可以直接被添加到容器中。JTodBar 类的常用方法如表 2 所示。

方法名称说明
add(Action a)添加一个指派动作的新的 JButton
addSeparator()将默认大小的分隔符添加到工具栏的末尾
addSeparator(Dimension size)将指定大小的分隔符添加到工具栏的末尾
getComponentAtIndex(int i)返回指定索引位置的组件
getComponentIndex(Component c)返回指定组件的索引
getMargin()返回工具栏边框和它的按钮之间的空白
getOrientation()返回工具栏的当前方向
isFloatable()获取 floatable 属性
isRollover()返回 rollover 状态
setBorderPainted(boolean b)设置 borderPainted 属性,如果需要绘制边框,则此属性为 true
setFloatable(boolean b)设置 floatable 属性,如果要移动工具栏,此属性必须设置为 true
setLayout(LayoutManager mgr)设置此容器的布局管理器
setMargin(Insets m)设置工具栏边框和它的按钮之间的空白
setOrientation(int o)设置工具栏的方向
setRollover(boolean rollover)设置此工具栏的 rollover 状态

例 1

下面通过实例来说明如何使用 JToolBar 创建工具栏,在该实例中给工具栏上的按钮添加了图片,当图片不存在时使用文字代替。主要实现步骤如下所示。

(1) 创建一个 ToolBarDemo 类,继承 JPanel 父类并实现 ActionListener 接口。

  1. package ch18;
  2. import javax.swing.*;
  3. import java.awt.*;
  4. import java.awt.event.*;
  5. import java.net.URL;
  6. import javax.swing.ImageIcon;
  7. import javax.swing.JFrame;
  8. import javax.swing.JPanel;
  9. import javax.swing.JToolBar;
  10. public class ToolBarDemo extends JPanel implements ActionListener
  11. {
  12. protected JTextArea textArea;
  13. protected String newline="\n";
  14. static final private String OPEN="OPEN";
  15. static final private String SAVE="SAVE";
  16. static final private String NEW="NEW";
  17. //事件监听器部分的代码省略,请查阅源文件
  18. protected void displayResult(String actionDescription)
  19. {
  20. textArea.append(actionDescription+newline);
  21. }
  22. public static void main(String[] args)
  23. {
  24. JFrame.setDefaultLookAndFeelDecorated(true);
  25. //定义窗体
  26. JFrame frame=new JFrame("工具栏");
  27. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  28. //定义面板
  29. ToolBarDemo newContentPane=new ToolBarDemo();
  30. newContentPane.setOpaque(true);
  31. frame.setContentPane(newContentPane);
  32. //显示窗体
  33. frame.pack();
  34. frame.setVisible(true);
  35. }
  36. @Override
  37. public void actionPerformed(ActionEvent e)
  38. {
  39. // TODO 自动生成的方法存根
  40. }
  41. }

(2) 在构造方法中对工具栏进行设置,主要代码如下所示。

  1. public ToolBarDemo()
  2. {
  3. super(new BorderLayout());
  4. //创建工具栏
  5. JToolBar toolBar=new JToolBar();
  6. addButtons(toolBar);
  7. //创建一个文本域,用来输出一些信息
  8. textArea=new JTextArea(15, 30);
  9. textArea.setEditable(false);
  10. JScrollPane scrollPane=new JScrollPane(textArea);
  11. //把组件添加到面板中
  12. setPreferredSize(new Dimension(450, 110));
  13. add(toolBar,BorderLayout.PAGE_START);
  14. add(scrollPane,BorderLayout.CENTER);
  15. }

(3) 构造方法中创建了一个工具栏 toolBar,然后调用 addButtons() 方法为工具栏设置按钮。addButtons() 方法的代码如下:

  1. protected void addButtons(JToolBar toolBar)
  2. {
  3. JButton button=null;
  4. button=makeNavigationButton("new1",NEW,"新建一个文件","新建");
  5. toolBar.add(button);
  6. button=makeNavigationButton("open1",OPEN,"打开一个文件","打开");
  7. toolBar.add(button);
  8. button=makeNavigationButton("save1",SAVE,"保存当前文件","保存");
  9. toolBar.add(button);
  10. }

(4) 在 addButtons() 方法中调用 makeNavigationButton() 方法,实现对工具栏上的按钮指定图片、动作指令、提示信息和无图片时的文本。具体实现代码如下:

  1. protected JButton makeNavigationButton(String imageName,String actionCommand,String toolTipText,String altText)
  2. {
  3. //搜索图片
  4. String imgLocation=imageName+".jpg";
  5. URL imageURL=ToolBarDemo.class.getResource(imgLocation);
  6. //初始化工具按钮
  7. JButton button=new JButton();
  8. //设置按钮的命令
  9. button.setActionCommand(actionCommand);
  10. //设置提示信息
  11. button.setToolTipText(toolTipText);
  12. button.addActionListener(this);
  13. if(imageURL!=null)
  14. {
  15. //找到图像
  16. button.setIcon(new ImageIcon(imageURL));
  17. }
  18. else
  19. {
  20. //没有图像
  21. button.setText(altText);
  22. System.err.println("Resource not found: "+imgLocation);
  23. }
  24. return button;
  25. }

(5) 运行程序,在窗口的顶部会看到包含 3 个按钮的工具栏。当鼠标指针放在工具按钮上时出现提示信息,如图 1 所示。


图1 无图片工具栏

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智慧浩海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值