JButton的使用
JButton的使用:
JButton的类层次结构图:
java.lang.Object --java.awt.Component--javax.swing.JComponent--javax.swing.AbstractButton--javax.swing.JButton
JButton是继承AbstractButton类而来,而AbstractButton本身是一个抽象类,里面定义了许多组件设置的方法与组件事件驱动 方法(Event handle),如addActionListener()、setText等,详情请看相关手册,所提供的方法不下50种,可说是非常重要的一个 类。事实上,AbstractButton类不公被JButton所继承,它同时还被JMenuItem、JToggleButton、JCheckBox、JRadioButton等类所 继承,提供给这些类强大且方便的功能,而且在使用上更能掌握这些组件的特性。我们此节先来了解JButton与JToggleButton的特 性,其余类在后面各节介绍。
JButton共有4个构造函数:
- JButton():建立一个按钮。
- JButton(Icon icon):建立一个有图像的按钮。
- JButton(String icon):建立一个有文字的按钮。
- JButton(String text,Icon icon):建立一个有图像与文字的按钮。
由JButton的构造函数可以看出:JButton与JLabel的使用相当类似,只是JButton少了排列方式的参数罢了。要是我们想设置 JButton内文字或图像的水平排列方式,我们可以利用AbstractButton抽象类所提供的setHorizontalAlignment()方法来达成。 JButton在使用上与JLabel相当类似,只是类的设计方式有所不同,JLabel类自行提供组件排列方式的方法,而JButton是继承 AbstractButton抽象类的方法来排列按钮内的内容。为什么JButton不自行提供排列方式等方法呢?主要是因为JButton与JMenuItem 、JToggleButton、JCheckBox、JRadioButton组件有许多共同的物性,例如它们都会有“按”的操作、都可以插入Icon与文字、 都可设置快捷键、都可呈现Enable或Disable状态等等,因此将AbstractButton类独立出来,实现这些共通的方法,再由其他类来继 承,将可增加程序结构对象化与模块化的特性,也让程序更容易维护.
JButton类所提供的方法非常少,大部份都会用到AbstractButton抽象类所提供的方法。
import java.awt.*; import java.awt.event.*; import javax.swing.*;public class JButtonDemo1 {public static void main(String[] args) {JFrame f = new JFrame("JButtonDemo1");Container contentPane = f.getContentPane();/** 你也可以用下面这个方式代替:JButton b=new JButton();b.setIcon(new* ImageIcon(".\\icons\\hand.jpg"));b.setText("按我");*/JButton b = new JButton("按我", new ImageIcon(".\\icons\\hand.jpg"));/** 如果没有设置文字的位置,系统默认值会将文字置于图形的右边中间位置。*/b.setHorizontalTextPosition(JButton.CENTER);b.setVerticalTextPosition(JButton.BOTTOM);contentPane.add(b);f.pack();f.show();f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});} }
6-4-1:在JButton上使用Rollover图像变化:
import java.awt.*; import java.awt.event.*; import javax.swing.*;public class RolloverDemo {public static void main(String[] args) {JFrame f = new JFrame("RolloverDemo");Container contentPane = f.getContentPane();Icon rollover = new ImageIcon(".\\icons\\address1.jpg");Icon general = new ImageIcon(".\\icons\\address2.jpg");Icon press = new ImageIcon(".\\icons\\address3.jpg");JButton b = new JButton();b.setRolloverEnabled(true);// 将Rollver功能打开。b.setIcon(general);b.setRolloverIcon(rollover);b.setPressedIcon(press);contentPane.add(b);f.pack();f.show();f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});} }
6-4-2:在JButton上设置快捷键:
import java.awt.*; import java.awt.event.*; import javax.swing.*;public class MnemonicButton implements ActionListener {public MnemonicButton() {JFrame f = new JFrame("MnemonicButton");Container contentPane = f.getContentPane();JButton b = new JButton("[o]打开新窗口");b.setMnemonic('o');/** 将b加入事件处理模式,当我们按下按钮时,会产生一个事件(ActionEvent),此事件会被ActionListener* 所接收。而ActionListener是一个interface,里面只有actionPerformed()一个方法,因此我们必须实现* actionPerformed()方法,处理我们所要的结果。*/b.addActionListener(this);contentPane.add(b);f.pack();f.show();f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});}public void actionPerformed(ActionEvent e) {JFrame newf = new JFrame("新窗口");JLabel label = new JLabel("这是新窗口");label.setHorizontalAlignment(JLabel.CENTER);newf.getContentPane().add(label);newf.setSize(100, 100);newf.show();}public static void main(String[] args) {new MnemonicButton();} }
6-4-3:设置默认按钮:
在java中要设置默认按钮可以使用JRootPane类所提供的setDefaultButton()方法,下面的例子我们将事件处理模式换成另 一种写法,也就是前面所提到的Inner Class匿名类写法,因此在类DefaultButton的右边就不用再写入implements ActionListener 了。
import java.awt.*; import java.awt.event.*; import javax.swing.*;public class DefaultButton {public DefaultButton() {JFrame f = new JFrame("DefaultButton");Container contentPane = f.getContentPane();contentPane.setLayout(new GridLayout(1, 2));JButton b1 = new JButton("Open Text window");JButton b2 = new JButton("Open Image window");b1.setMnemonic('T');b2.setMnemonic('I');f.getRootPane().setDefaultButton(b1);b1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {JFrame newf = new JFrame("新窗口");JLabel label = new JLabel("这是文字窗口");label.setHorizontalAlignment(JLabel.CENTER);newf.getContentPane().add(label);newf.setSize(200, 200);newf.show();}});b2.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {JFrame newf = new JFrame("新窗口");JLabel label = new JLabel(new ImageIcon(".\\icons\\address1.jpg"));label.setHorizontalAlignment(JLabel.CENTER);newf.getContentPane().add(label);newf.setSize(200, 200);newf.show();}});contentPane.add(b1);contentPane.add(b2);f.pack();f.show();f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});}public static void main(String[] args) {new DefaultButton();} }
JButton的使用相关推荐
- JButton类,简单应用
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.Ac ...
- java 按钮不显示文字_java – 使JButton中的文本不可见
你说: EDIT: I can't use .setText(" ") because I have to compare the value within it. 废话.正如我在 ...
- jbutton可以设置id吗_Java JButton.setHorizontalTextPosition方法代碼示例
本文整理匯總了Java中javax.swing.JButton.setHorizontalTextPosition方法的典型用法代碼示例.如果您正苦於以下問題:Java JButton.setHori ...
- jbutton增加监听事件_Swing 如何进行事件监听
步骤1:按钮监听步骤2:键盘监听步骤3:鼠标监听步骤4:适配器 示例 1 : 按钮监听 创建一个匿名类实现ActionListener接口,当按钮被点击时,actionPerformed方法就会被调用 ...
- java 添加jbutton_java – 如何在JScrollPane上添加JButton?
嗨,我想在这里制作桌面应用程序我在使用jscrollpane.我想在jscrollpane中添加multipul按钮.我只能添加单个按钮,我该怎么做 我的代码如下 public class Addin ...
- java jpopupmenu 无法显示_java – 从JButton显示/隐藏JPopupMenu; FocusListener无法正常工作?...
我需要一个带有附加下拉样式菜单的JButton.所以我拿了一个JPopupMenu并以你在下面的代码中看到的方式将它附加到JButton.它需要做的是: >单击时显示弹出窗口 >如果再次点 ...
- 5、Java Swing JButton:按钮组件
按钮是图形界面上常见的元素,在前面已经多次使用过它.在 Swing 中按钮是 JButton 类的对象, JButton 类的常用构造方法如下. JButton():创建一个无标签文本.无图标的按钮. ...
- java jbutton 禁用_java – 如何禁用JButton在禁用时变灰?
您只需将按钮的禁用图标设置为与按钮图标相同的值即可.看这个例子: 在左侧是一个按钮,我在其中设置了icon和disabledIcon.在右边我只设置了图标: import java.awt.Borde ...
- java的jbutton啥意思,Jbutton和Jpanel和JFrame之间的区别?
我制作简单的游戏,它由2个文件组成,第一个文件是"Alibaba.java",它是从JFrame扩展的,我用它来显示游戏的一般内容! 第二个文件是"intro.java& ...
- JAVA Swing——设置JButton按钮样式
1.对JButton大小的设置 因为JButen是属于小器件类型的,所以一般的setSize不能对其惊醒大小的设置,所以一般我们用 button.setPreferredSize(new Dimens ...
最新文章
- 手机不断进入recovery mode
- 无线鼠标计算机不识别,win7系统下USB无线鼠标电脑检测不到如何解决
- ceph编译_Ceph编译:L版本及其之后的版本
- 陈灯可重用代码段管理器(插件版最新版本:3.2;桌面版最新版本:2.3)
- Adapter适配器设计模式
- Oracle移除表空间的数据文件 ora-00604 ora-01426
- 蓝桥杯 BASIC-22 基础练习 FJ的字符串
- PAT (Basic Level) Practice1013 数素数
- 通过windows远程访问linux桌面的方法(简单)
- Atitit 财政学概论 attilax学习笔记
- 动态规划——Palindrome Partitioning II
- layui radio 赋初始值
- 给MDK5/KEIL5安装51/ARM编译坏境
- 文献 | 一眨眼就错过了的心理机制
- 华为云服务器安装redis、mysql、jdk、tomcat、nginx
- 如何批量新建文件夹,批量新建文件夹并命名
- OJ sdust Java记录
- osgEarth 指北针显示
- 2022最全大数据学习路线(建议收藏)
- 必知的Python 五个精彩彩蛋
热门文章
- 安装系统user服务器登录失败,win10系统开机提示user profile service服务器登录失败的解决方法...
- 惠普服务器DL380 Gen10/Gen9宕机重启
- MySQL的安装(完整版)
- 【Linux】文件系统及软硬连接
- 推导抛物线插值的拉格朗日插值公式
- matlab多重分形广义函数谱,多重广义分形维数计算 - 程序语言 - DelphiPascal - 小木虫论坛-学术科研互动平台...
- 西门子s300编程实例_几个西门子plc编程实例图解(含程序应用实例)
- 智慧管廊可视化管理系统搭建
- ce修改器我的世界服务器,ce修改器怎么修改金钱?ce修改器无限金钱图文教程
- 社交网络分析之关系图(原理+Python代码)