Java按钮控件数组实现计算器界面
编写程序,通过按钮数组来管理界面中的所有按钮控件,从而使用最少的代码实现模拟的计算器界面。
思路如下:
- 创建一个类,通过extends使其继承窗体类JFrame;
- 创建一个JFrame对象,使用JFrame类的setVisible()方法设置窗体可见;
- 在构造函数中,使用super()方法继承父类的构造方法;
- 使用setTitle()方法设置窗体的标题;
- 使用setBounds()方法设置窗体的显示位置及大小;
- 使用setDefaultCloseOperation()方法设置窗体关闭按钮的动作为退出;
- 使用GridLayout创建网格布局管理器对象;
- 使用GridLayout类的setHgap()方法设置组件的水平间距;
- 使用GridLayout类的setVgap()方法设置组件的垂直间距;
- 创建JPanel容器对象;
- 通过JPanel类的setLayout()方法设置容器采用网格布局管理器;
- 创建一个字符串型二维数组,初始化其值为计算器上对应按钮上显示的值;
- 创建一个JButton型二维数组,并为其分配和之前的字符串型二维数组对应的空间;
- 遍历字符串型二维数组,对它的每个元素都将其赋值给JButton型二维数组中的对应按钮,并对每个按钮添加事件,使得点击按钮时在文本输入框中显示对应的值,最后使用JPanel类的add()方法将按钮添加到面板中。
代码如下:
- import java.awt.BorderLayout;
- import java.awt.Dimension;
- import java.awt.GridLayout;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- import javax.swing.JTextField;
- import javax.swing.SwingConstants;
- import javax.swing.UIManager;
- public class ButtonArrayExample extends JFrame { // 继承窗体类JFrame
- /**
- *
- */
- private static final long serialVersionUID = 6626440733001287873L;
- private JTextField textField;
- public static void main(String args[]) {
- try {
- UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
- } catch (Throwable e) {
- e.printStackTrace();
- }
- ButtonArrayExample frame = new ButtonArrayExample();
- frame.setVisible(true); // 设置窗体可见,默认为不可见
- }
- public ButtonArrayExample() {
- super(); // 继承父类的构造方法
- BorderLayout borderLayout = (BorderLayout) getContentPane().getLayout();
- borderLayout.setHgap(20);
- borderLayout.setVgap(10);
- setTitle("按钮数组实现计算器界面 "); // 设置窗体的标题
- setBounds(100, 100, 290, 282); // 设置窗体的显示位置及大小
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置窗体关闭按钮的动作为退出
- textField = new JTextField();
- textField.setHorizontalAlignment(SwingConstants.TRAILING);
- textField.setPreferredSize(new Dimension(12, 50));
- getContentPane().add(textField, BorderLayout.NORTH);
- textField.setColumns(10);
- final GridLayout gridLayout = new GridLayout(4, 0); // 创建网格布局管理器对象
- gridLayout.setHgap(5); // 设置组件的水平间距
- gridLayout.setVgap(5); // 设置组件的垂直间距
- JPanel panel = new JPanel(); // 获得容器对象
- panel.setLayout(gridLayout); // 设置容器采用网格布局管理器
- getContentPane().add(panel, BorderLayout.CENTER);
- String[][] names = { { "1", "2", "3", "+" }, { "4", "5", "6", "-" }, { "7", "8", "9", "×" }, { ".", "0", "=", "÷" } };
- JButton[][] buttons = new JButton[4][4];
- for (int row = 0; row < names.length; row++) {
- for (int col = 0; col < names.length; col++) {
- buttons[row][col] = new JButton(names[row][col]); // 创建按钮对象
- buttons[row][col].addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- JButton button = (JButton) e.getSource();
- String text = textField.getText();
- textField.setText(text + button.getText());
- }
- });
- panel.add(buttons[row][col]); // 将按钮添加到面板中
- }
- }
- }
- }
效果如图:
Java按钮控件数组实现计算器界面的更多相关文章
- Java通过复选框控件数组实现添加多个复选框控件
编写程序,通过复选框控件数组事先选择用户爱好信息的复选框,在该程序中,要求界面中的复选框数量可以根据指定复选框名称的字符串数组的长度来自动调节. 思路如下: 创建JPanel面板对象: 使用JPane ...
- kettle系列-[KettleUtil]kettle插件,类似kettle的自定义java类控件
该kettle插件功能类似kettle现有的定义java类插件,自定java类插件主要是支持在kettle中直接编写java代码实现自定特殊功能,而本控件主要是将自定义代码转移到jar包,就是说自定义 ...
- 在C# WinForm程序中创建控件数组及相应的事件处理
控件数组是VB提供的一个优秀的设计解决方案,它能很方便快捷的处理大批同类控件的响应和时间处理,但不知为什么在C#中这个优秀特性没有传承下来,甚为可惜,本文将要探讨就是如何在C# WinForm程序实现 ...
- Atitit.获取swing ui 按钮控件的id 与名字 与JPDA 调试体系
Atitit.获取swing ui 按钮控件的id 与名字 与JPDA 调试体系 1. Swing Inspector是一个Java Swing/AWT用户界面分析和调试工具,功能与firebug类似 ...
- MFC编程入门之二十三(常用控件:按钮控件的编程实例)
上一节讲了按钮控件Button.Radio Button和Check Box的基本用法,本节继续讲按钮控件的内容,通过一个实例让大家更清楚按钮控件在实际的软件开发中如何使用. 因为Button控件在前 ...
- Fixjs实践——标签、按钮控件
Fixjs介绍 Fixjs是一款javascript界面基础框架,主要为开发复杂组件提供底层的框架支持. Fixjs 0.3.0主要增加了文本显示类fixjs.text.TextField 支持的主要 ...
- 安卓开发_复选按钮控件(CheckBox)的简单使用
复选按钮 即可以选择若干个选项,与单选按钮不同的是,复选按钮的图标是方块,单选按钮是圆圈 复选按钮用CheckBox表示,CheckBox是Button的子类,支持使用Button的所有属性 一.由于 ...
- VS2010/MFC编程入门之二十三(常用控件:按钮控件的编程实例)
上一节VS2010/MFC编程入门教程中鸡啄米讲了按钮控件Button.Radio Button和Check Box的基本用法,本节就继续讲按钮控件的内容,通过一个实例让大家更清楚按钮控件在实际的软件 ...
- java浏览器控件jxbrowser(简单demo模拟自动登录与点击)
写在前面: 老大让我写个脚本自动给他写dms有一段时间了,说实话当时不知道老大指的这个脚本是什么?毕竟是做web的,难道是写个数据库sql语句脚本吗?也就放在了一边.巧了,最近一个朋友说他之前写了个程 ...
随机推荐
- elasticsearch 服务安全配置
elasticsearch安装与使用(5)-- search guard安装与配置 一.安装search guard插件必须要安装两部分: ①search-guard-xx ②search-gua ...
- 【css】清除浮动(clearfix 和 clear)的用法
本文主要是讲解如何在 html 中使用 clearfix 和 clear,针对那些刚开始了解 css 的童鞋.关于 clearfix 和 clear 的样式在这里我就不写了,具体样式点击此处. 下面就 ...
- 【Ansible】 各种模块
[Ansible 模块] 就如python库一样,ansible的模块也分成了基本模块和第三方拓展模块(自定义的模块).这些模块其实才是作为真实的逻辑载体,在帮助ansible进行作业. ansibl ...
- Java虚拟机(JVM)体系结构概述及各种性能参数优化总结
转自:http://blog.csdn.net/zhongwen7710/article/details/39213377 第一部分:相关的概念 数据类型 Java虚拟机中,数据类型可以分为两类:基本 ...
- Kafka设计解析(二):Kafka High Availability (上)
转自:http://www.infoq.com/cn/articles/kafka-analysis-part-2/ Kafka在0.8以前的版本中,并不提供High Availablity机制,一旦 ...
- python 查看目录下所有目录和文件
python查看目录下所有的子目录和子文件 python递归遍历目录结构 我喜欢第一种 方法1 import json, os def list_dir(path, res): for i in os ...
- Unity---------Mesh理解
Mesh顾名思义“网格”,Unity3D里面所有的模型都是由Mesh组成的,UI也不例外. 例如下图,模型上的一个个小网格就是Mesh,这些Mesh有不同的三维顶点(Vector3),共同组成了一个3 ...
- (诊断)处理错误fatal error: Python.h: No such file or directory
安装与Python版本对应的 python-dev 即可,比如: $ -dev
- Python——pyiso8601
该模块不是Python内建的模块,为Python补充了 ISO 8601 解析——将常见的 ISO 8601 日期字符创转化为 Python 的 datetime 对象. 安装 $ pip insta ...
- ubuntu 14.04安装 DevStack的脚本配置文件——localrc
本文ubuntu 14.04安装 DevStack的脚本配置文件——localrc,本文件名已经逐渐被取代,但是出于后向兼容性,使用该文件仍然可以为stack.sh安装脚本指定安装DevStack时的 ...