Java按钮控件数组实现计算器界面

时间:2022-09-03 16:17:48

编写程序,通过按钮数组来管理界面中的所有按钮控件,从而使用最少的代码实现模拟的计算器界面。

思路如下:

  1. 创建一个类,通过extends使其继承窗体类JFrame;
  2. 创建一个JFrame对象,使用JFrame类的setVisible()方法设置窗体可见;
  3. 在构造函数中,使用super()方法继承父类的构造方法;
  4. 使用setTitle()方法设置窗体的标题;
  5. 使用setBounds()方法设置窗体的显示位置及大小;
  6. 使用setDefaultCloseOperation()方法设置窗体关闭按钮的动作为退出;
  7. 使用GridLayout创建网格布局管理器对象;
  8. 使用GridLayout类的setHgap()方法设置组件的水平间距;
  9. 使用GridLayout类的setVgap()方法设置组件的垂直间距;
  10. 创建JPanel容器对象;
  11. 通过JPanel类的setLayout()方法设置容器采用网格布局管理器;
  12. 创建一个字符串型二维数组,初始化其值为计算器上对应按钮上显示的值;
  13. 创建一个JButton型二维数组,并为其分配和之前的字符串型二维数组对应的空间;
  14. 遍历字符串型二维数组,对它的每个元素都将其赋值给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按钮控件数组实现计算器界面的更多相关文章

  1. Java通过复选框控件数组实现添加多个复选框控件

    编写程序,通过复选框控件数组事先选择用户爱好信息的复选框,在该程序中,要求界面中的复选框数量可以根据指定复选框名称的字符串数组的长度来自动调节. 思路如下: 创建JPanel面板对象: 使用JPane ...

  2. kettle系列-&lbrack;KettleUtil&rsqb;kettle插件,类似kettle的自定义java类控件

    该kettle插件功能类似kettle现有的定义java类插件,自定java类插件主要是支持在kettle中直接编写java代码实现自定特殊功能,而本控件主要是将自定义代码转移到jar包,就是说自定义 ...

  3. 在C&num; WinForm程序中创建控件数组及相应的事件处理

    控件数组是VB提供的一个优秀的设计解决方案,它能很方便快捷的处理大批同类控件的响应和时间处理,但不知为什么在C#中这个优秀特性没有传承下来,甚为可惜,本文将要探讨就是如何在C# WinForm程序实现 ...

  4. Atitit&period;获取swing&&num;160&semi;ui&&num;160&semi;按钮控件的id&&num;160&semi;与名字&&num;160&semi;与JPDA&&num;160&semi;调试体系

    Atitit.获取swing ui 按钮控件的id 与名字 与JPDA 调试体系 1. Swing Inspector是一个Java Swing/AWT用户界面分析和调试工具,功能与firebug类似 ...

  5. MFC编程入门之二十三(常用控件:按钮控件的编程实例)

    上一节讲了按钮控件Button.Radio Button和Check Box的基本用法,本节继续讲按钮控件的内容,通过一个实例让大家更清楚按钮控件在实际的软件开发中如何使用. 因为Button控件在前 ...

  6. Fixjs实践——标签、按钮控件

    Fixjs介绍 Fixjs是一款javascript界面基础框架,主要为开发复杂组件提供底层的框架支持. Fixjs 0.3.0主要增加了文本显示类fixjs.text.TextField 支持的主要 ...

  7. 安卓开发&lowbar;复选按钮控件(CheckBox)的简单使用

    复选按钮 即可以选择若干个选项,与单选按钮不同的是,复选按钮的图标是方块,单选按钮是圆圈 复选按钮用CheckBox表示,CheckBox是Button的子类,支持使用Button的所有属性 一.由于 ...

  8. VS2010&sol;MFC编程入门之二十三(常用控件:按钮控件的编程实例)

    上一节VS2010/MFC编程入门教程中鸡啄米讲了按钮控件Button.Radio Button和Check Box的基本用法,本节就继续讲按钮控件的内容,通过一个实例让大家更清楚按钮控件在实际的软件 ...

  9. java浏览器控件jxbrowser&lpar;简单demo模拟自动登录与点击&rpar;

    写在前面: 老大让我写个脚本自动给他写dms有一段时间了,说实话当时不知道老大指的这个脚本是什么?毕竟是做web的,难道是写个数据库sql语句脚本吗?也就放在了一边.巧了,最近一个朋友说他之前写了个程 ...

随机推荐

  1. linux文件系统节点详解

    linux文件系统有两层结构,逻辑结构和物理结构.也就是inode和block. 每个文件都有一个inode, 记录文件属性:权限,时间还有最重要的block号码. block是实际存放文件内容的地方 ...

  2. Web应用数据库配置参数读取方法之一

    jsp页面: <% //从配置中获取数据库驱动 String driver=application.getInitParameter("driver"); //从数据库中得到 ...

  3. List&period;Foreach与C&num;的foreach的区别

    几年前参加面试时就被提问过,现在面试别人时也经常提到这个问题. 今天小试了一下.得出如下几点: 1. 首先,mscorlib里System.Collections.Generic. List<T ...

  4. java之Maven配置和springMvc的简单应用

    初始springMvc这个框架,非常的陌生,而且幸好公司是通过maven这个代码管理工具,可以随时添加依赖.解决了很多问题在以后深入开发中. 项目结构: 通过结构中,pom.xml这个文件其实就说明这 ...

  5. c&num; winform UI &plus; python底层的一点尝试

    鉴于python做winform之类的UI比较弱.于是想结合C#的winform 和 python的底层开发(windows平台). 尝试做了一个RSS阅读器.在这里:http://download. ...

  6. &lbrack;LeetCode&rsqb;题解(python):113 Path Sum II

    题目来源 https://leetcode.com/problems/path-sum-ii/ Given a binary tree and a sum, find all root-to-leaf ...

  7. 基于visual Studio2013解决面试题之0306打印第一次只出现一次的字符

     题目

  8. hdu 3221 Brute-force Algorithm&lpar;高速幂取模,矩阵高速幂求fib&rpar;

    http://acm.hdu.edu.cn/showproblem.php?pid=3221 一晚上搞出来这么一道题..Mark. 给出这么一个程序.问funny函数调用了多少次. 我们定义数组为所求 ...

  9. WIFI实时监控追踪小车演示视频——安卓端、小车

    文章由@超人爱因斯坦出品,转载请注明出处.         文章链接:          http://hpw123.net/a/qingsongyike/yingyinqu/2014/1019/59 ...

  10. mysql基础理论

    第一节数据库管理系统概述 在www.db-engines.com/en/ 这个网站中可以看到对数据库的排名 数据库分为: 关系型数据库: mysql------mariaDB oracle 非关系型数 ...