按钮大概是使用最为普遍的用户界面组件。按钮通常带有某种边框,且可以被鼠标或快捷键激活。能够激活它们来完成某个功能,而且很多其他Swing组件都是AbstractButton类的扩展,而AbstractButton类是Swing按钮的基类。

JButton共有4个构造函数:

JButton():建立一个按钮。
JButton(Icon icon):建立一个有图像的按钮。
JButton(String icon):建立一个有文字的按钮。
JButton(String text,Icon icon):建立一个有图像与文字的按钮。

JButton中常用方法说明:
addActionListener(ActionListener l)
将一个 ActionListener 添加到按钮中。
getActionCommand()
返回此按钮的动作命令。
getIcon()
返回默认图标。
getMnemonic()
返回当前模型中的键盘助记符。
getText()
返回按钮的文本
setActionCommand(String actionCommand)
设置此按钮的动作命令。
setBorderPainted(boolean b)
设置 borderPainted 属性。
setEnabled(boolean b)
启用(或禁用)按钮。
setHorizontalAlignment(int alignment)
设置图标和文本的水平对齐方式
setHorizontalTextPosition(int textPosition)
设置文本相对于图标的横向位置。
setIcon(Icon defaultIcon)
设置按钮的默认图标。
setMnemonic(int mnemonic)
设置当前模型上的键盘助记符。
setPressedIcon(Icon pressedIcon)
设置按钮的按下图标。
setRolloverEnabled(boolean b)
设置 rolloverEnabled 属性,若需要翻转效果,该属性必须为 true。
setRolloverIcon(Icon rolloverIcon)
设置按钮的翻转图标。
setRolloverSelectedIcon(Icon rolloverSelectedIcon)
设置按钮的翻转选择图标。
setText(String text)
设置按钮的文本。
setVerticalAlignment(int alignment)
设置图标和文本的垂直对齐方式。

在实际开发中为了保持界面风格统一,经常会重写JButton类。

例1:按钮中增加图片,增加鼠标时间效果

import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.Icon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class ButtonwithImageIcon extends JFrame { public static void main(String[] args) { ButtonwithImageIcon that = new ButtonwithImageIcon(); that.setVisible(true); } public ButtonwithImageIcon() { setSize(450, 350); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); getContentPane().add(new ButtonPanel(), BorderLayout.SOUTH); } } class ButtonPanel extends JPanel { public ButtonPanel() { JButton btn = new JButton("Push Me", new BoxIcon(Color.blue, 2)); //设置按钮的翻转图标。 btn.setRolloverIcon(new BoxIcon(Color.cyan, 3)); //设置按钮的按下图标。 btn.setPressedIcon(new BoxIcon(Color.yellow, 4)); //设置文本相对于图标的横向位置。 btn.setHorizontalTextPosition(JButton.LEFT); //设置按钮边框样式 btn.setBorder(BorderFactory.createEtchedBorder()); add(btn); } } class BoxIcon implements Icon { private Color color; private int borderWidth; BoxIcon(Color color, int borderWidth) { this.color = color; this.borderWidth = borderWidth; } public int getIconWidth() { return 20; } public int getIconHeight() { return 20; } public void paintIcon(Component c, Graphics g, int x, int y) { g.setColor(Color.black); g.fillRect(x, y, getIconWidth(), getIconHeight()); g.setColor(color); g.fillRect(x + borderWidth, y + borderWidth, getIconWidth() - 2 * borderWidth, getIconHeight() - 2 * borderWidth); } }

例2:按钮中增加HTML样式

import javax.swing.JButton; import javax.swing.JFrame; public class HTMLButton { public static void main(String args[]) { JFrame frame = new JFrame("DefaultButton"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); String htmlButton = "<html><sup>HTML</sup> <sub><em>Button</em></sub><br>" + "<font color=/"#FF0080/"><u>Multi-line</u></font>"; JButton button4 = new JButton(htmlButton); frame.add(button4); frame.setSize(300, 200); frame.setVisible(true); } }

例3:设置默认按钮

import javax.swing.JFrame; import javax.swing.JRootPane; public class SettingDefaultButtonJRootPane { public static void main(String args[]) { JFrame frame = new JFrame("DefaultButton"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JButton button4 = new JButton("AAA"); frame.add(button4,"Center"); frame.add(new JButton("BBB"),"South"); JRootPane rootPane = frame.getRootPane(); //设置默认按钮 rootPane.setDefaultButton(button4); frame.setSize(300, 200); frame.setVisible(true); } }

例4 : 按钮事件

import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.SwingUtilities; public class ButtonActionSample { public static void main(String args[]) { JFrame frame = new JFrame("Button Sample"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JButton button = new JButton("Select Me"); ActionListener actionListener = new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { System.out.println("I was selected."); } }; MouseListener mouseListener = new MouseAdapter() { public void mousePressed(MouseEvent mouseEvent) { int modifiers = mouseEvent.getModifiers(); if ((modifiers & InputEvent.BUTTON1_MASK) == InputEvent.BUTTON1_MASK) { // Mask may not be set properly prior to Java 2 // See SwingUtilities.isLeftMouseButton() for workaround System.out.println("Left button pressed."); } if ((modifiers & InputEvent.BUTTON2_MASK) == InputEvent.BUTTON2_MASK) { System.out.println("Middle button pressed."); } if ((modifiers & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK) { System.out.println("Right button pressed."); } } public void mouseReleased(MouseEvent mouseEvent) { if (SwingUtilities.isLeftMouseButton(mouseEvent)) { System.out.println("Left button released."); } if (SwingUtilities.isMiddleMouseButton(mouseEvent)) { System.out.println("Middle button released."); } if (SwingUtilities.isRightMouseButton(mouseEvent)) { System.out.println("Right button released."); } System.out.println(); } }; button.addActionListener(actionListener); button.addMouseListener(mouseListener); Container contentPane = frame.getContentPane(); contentPane.add(button, BorderLayout.SOUTH); frame.setSize(300, 100); frame.setVisible(true); } }

Swing开发之JButton篇相关推荐

  1. java jcombobox 样式_Swing开发之JComboBox篇

    JList和ComboBox很相似,因为这两个组件都显示一个项列表.因此,它们都有扩展ListModel接口的模型.而且,这两个组件都有绘制器,这些绘制器通过实现ListCellBenderer接口来 ...

  2. Jmeter Kafka插件开发之Sampler篇

    Jmeter Kafka插件开发之Sampler篇 背景:在项目中经常需要往kafka里面写数据,并拿生成的数据执行后续的操作,并且有些接口中也需要用到kafka里的数据,小编使用JMeter做接口测 ...

  3. 微信开发 ━━ 微信商户v3微信支付H5方式开发之php篇

    native方式开发纪要:<微信开发 ━━ 微信商户native方式支付v3开发之php篇> 一.流程 流程是必须要弄懂的,弄懂之后遇到问题也能知道出在哪里. 官方说明:<H5支付统 ...

  4. 视频教程-跟着王进老师学开发之C#篇:基础语法-C#

    跟着王进老师学开发之C#篇:基础语法 教学风格独特,以学员视角出发设计课程,难易适度,重点突出,架构清晰,将实战经验融合到教学中.讲授技术同时传递方法.得到广大学员的高度认可. 王进 ¥208.00 ...

  5. 跟着王进老师学开发之C#篇:基础语法-王进-专题视频课程

    跟着王进老师学开发之C#篇:基础语法-10520人已学习 课程介绍         本次课程是初级课程,只要熟悉计算机的基本应用和操作,都可以完成本次课程学习.本课程深入浅出的介绍了C#语言的基本语法 ...

  6. 跟着王进老师学开发之C#篇第五季:图书管理系统-王进-专题视频课程

    跟着王进老师学开发之C#篇第五季:图书管理系统-2659人已学习 课程介绍         本季视频通过完整的案例介绍了图书管理系统的开发,包含了数据库的设计.界面设计.代码实现等等,本系统的模块包含 ...

  7. 跟着王进老师学开发之Python篇第一季:基础入门篇-王进-专题视频课程

    跟着王进老师学开发之Python篇第一季:基础入门篇-2859人已学习 课程介绍         本季课程首先对Python简要介绍,然后演示如何搭建Python的开发环境,以及如何在IDE中调试Py ...

  8. 视频教程-跟着王进老师学开发之Python篇第一季:基础入门篇-Python

    跟着王进老师学开发之Python篇第一季:基础入门篇 教学风格独特,以学员视角出发设计课程,难易适度,重点突出,架构清晰,将实战经验融合到教学中.讲授技术同时传递方法.得到广大学员的高度认可. 王进 ...

  9. java jlist_Swing开发之JList篇

    由JList类代表的Swing列表显示一个可选取对象列表,它支持三种选取模式:单选取.单间隔选取和多间隔选取. JList类把维护和绘制列表的工作委托给一个对象来完成.一个列表的模型维护一个对象列表, ...

  10. Delphi数据库开发之TTable篇1

    既然是说Delphi中的SQL使用,肯定离不开TDataSet派生出来的DataSet控件(应该说类比较确切些),这里我说的DataSet只是一个大类的称呼,并不是特指实际的TDataSet.在众多控 ...

最新文章

  1. JFlash ARM对stm32程序的读取和烧录
  2. 大萧条时期什么行业走俏_大流行时期的用户体验
  3. 数字图像处理 第一章 概述
  4. 拆散组合思路求解期望,方差
  5. 3DMAX 2018 界面简介
  6. IBM ServerGuide引导安装指南
  7. 如何解决没有指定在Windows运行或者它包含错误
  8. 计算机文件夹怎样显示隐藏文件,显示隐藏文件夹,教您电脑如何显示隐藏文件夹...
  9. BiliDuang(哔哩哔哩视频下载器)
  10. MyBatis高效同步百万级数据
  11. 2021考研数学汤家凤大纲解析
  12. [2021.05.26]AudioTrack流程分析
  13. Spring Cloud ZooKeeper Discovery Client Not Register on ZooKeeper when using SpringBootServletInitia
  14. 20220215-CTF-MISC-BUUCTF-ningen--binwalk分析---dd命令分离--ARCHPR暴力破解
  15. PIV实验流场流速云图(MALAB contour函数用法)
  16. 第四届【强网杯】主动
  17. Excel 操作 插件 方方格子 工作簿未按字母顺序排列 重名工作簿名 并拆分成工作表
  18. Spring的15款优质开源框架,你用过几个呀?
  19. 社科院与杜兰大学金融管理硕士---授人以鱼不如授人以渔,培养全新金融人才
  20. SQL Server—查询表结构

热门文章

  1. AC控制器和无线路由器的区别
  2. 微商引流产品有哪些?做微商如何引流以及推广产品?
  3. 集合经验模态分解matlab,matlab集合经验模态分解EEMD工具包
  4. html展开收起样式,前端网页内容实现展开/收起全文的操作(js+css控制高度实现)...
  5. 微信小程序的Django后端极简部署
  6. win7计算机怎么优化驱动器,win7电脑怎么优化
  7. 前端常见的几种布局方式
  8. 免费下载 | ContextCapture分块OBJ模型合并与裁剪
  9. 怎么制作自己的压缩软件
  10. maxscale mysql 主从_MySQL高可用——MaxScale