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的使用相关推荐

  1. JButton类,简单应用

    import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.Ac ...

  2. java 按钮不显示文字_java – 使JButton中的文本不可见

    你说: EDIT: I can't use .setText(" ") because I have to compare the value within it. 废话.正如我在 ...

  3. jbutton可以设置id吗_Java JButton.setHorizontalTextPosition方法代碼示例

    本文整理匯總了Java中javax.swing.JButton.setHorizontalTextPosition方法的典型用法代碼示例.如果您正苦於以下問題:Java JButton.setHori ...

  4. jbutton增加监听事件_Swing 如何进行事件监听

    步骤1:按钮监听步骤2:键盘监听步骤3:鼠标监听步骤4:适配器 示例 1 : 按钮监听 创建一个匿名类实现ActionListener接口,当按钮被点击时,actionPerformed方法就会被调用 ...

  5. java 添加jbutton_java – 如何在JScrollPane上添加JButton?

    嗨,我想在这里制作桌面应用程序我在使用jscrollpane.我想在jscrollpane中添加multipul按钮.我只能添加单个按钮,我该怎么做 我的代码如下 public class Addin ...

  6. java jpopupmenu 无法显示_java – 从JButton显示/隐藏JPopupMenu; FocusListener无法正常工作?...

    我需要一个带有附加下拉样式菜单的JButton.所以我拿了一个JPopupMenu并以你在下面的代码中看到的方式将它附加到JButton.它需要做的是: >单击时显示弹出窗口 >如果再次点 ...

  7. 5、Java Swing JButton:按钮组件

    按钮是图形界面上常见的元素,在前面已经多次使用过它.在 Swing 中按钮是 JButton 类的对象, JButton 类的常用构造方法如下. JButton():创建一个无标签文本.无图标的按钮. ...

  8. java jbutton 禁用_java – 如何禁用JButton在禁用时变灰?

    您只需将按钮的禁用图标设置为与按钮图标相同的值即可.看这个例子: 在左侧是一个按钮,我在其中设置了icon和disabledIcon.在右边我只设置了图标: import java.awt.Borde ...

  9. java的jbutton啥意思,Jbutton和Jpanel和JFrame之间的区别?

    我制作简单的游戏,它由2个文件组成,第一个文件是"Alibaba.java",它是从JFrame扩展的,我用它来显示游戏的一般内容! 第二个文件是"intro.java& ...

  10. JAVA Swing——设置JButton按钮样式

    1.对JButton大小的设置 因为JButen是属于小器件类型的,所以一般的setSize不能对其惊醒大小的设置,所以一般我们用 button.setPreferredSize(new Dimens ...

最新文章

  1. 手机不断进入recovery mode
  2. 无线鼠标计算机不识别,win7系统下USB无线鼠标电脑检测不到如何解决
  3. ceph编译_Ceph编译:L版本及其之后的版本
  4. 陈灯可重用代码段管理器(插件版最新版本:3.2;桌面版最新版本:2.3)
  5. Adapter适配器设计模式
  6. Oracle移除表空间的数据文件 ora-00604 ora-01426
  7. 蓝桥杯 BASIC-22 基础练习 FJ的字符串
  8. PAT (Basic Level) Practice1013 数素数
  9. 通过windows远程访问linux桌面的方法(简单)
  10. Atitit 财政学概论 attilax学习笔记
  11. 动态规划——Palindrome Partitioning II
  12. layui radio 赋初始值
  13. 给MDK5/KEIL5安装51/ARM编译坏境
  14. 文献 | 一眨眼就错过了的心理机制
  15. 华为云服务器安装redis、mysql、jdk、tomcat、nginx
  16. 如何批量新建文件夹,批量新建文件夹并命名
  17. OJ sdust Java记录
  18. osgEarth 指北针显示
  19. 2022最全大数据学习路线(建议收藏)
  20. 必知的Python 五个精彩彩蛋

热门文章

  1. 安装系统user服务器登录失败,win10系统开机提示user profile service服务器登录失败的解决方法...
  2. 惠普服务器DL380 Gen10/Gen9宕机重启
  3. MySQL的安装(完整版)
  4. 【Linux】文件系统及软硬连接
  5. 推导抛物线插值的拉格朗日插值公式
  6. matlab多重分形广义函数谱,多重广义分形维数计算 - 程序语言 - DelphiPascal - 小木虫论坛-学术科研互动平台...
  7. 西门子s300编程实例_几个西门子plc编程实例图解(含程序应用实例)
  8. 智慧管廊可视化管理系统搭建
  9. ce修改器我的世界服务器,ce修改器怎么修改金钱?ce修改器无限金钱图文教程
  10. 社交网络分析之关系图(原理+Python代码)