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

思路如下:

创建一个类,通过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按钮控件数组实现计算器界面相关推荐

  1. 综合使用各种布局和控件创建出计算器界面

    综合使用各种布局和控件创建出计算器界面 Grid layout子控件超出屏幕的一个解决方法 主要是gridlayout的使用(Tablelayout无法实现跨行操作) 有想法的小伙伴也可以用其他的 G ...

  2. java浏览器下载_Java浏览器控件下载-JxBrowser(Java浏览器控件)官方下载[Java控件]-天极下载...

    用于Windows的Chromium 64位二进制文件仅支持Windows 64位环境,无法在Windows 32位上使用.哪一个被使用? 它取决于Windows体系结构和Java应用程序类路径. j ...

  3. BCB高手进阶-如何实现控件数组

    BCB高手进阶-如何实现控件数组 ( 在C++Builder中,没有提供像VB中控件数组的功能,很令遗憾.经过一番琢摸,终于解决了这个问题.技巧不敢独享,奉献出来供大家交流. 在VB中,控件数组可以 ...

  4. 计算机二级vb知识点汇总,计算机等级考试二级VB考点:控件数组

    控件数组是由一组相同类型的控件组成的,它们共用一个控件名,具有相同的数组.控件数组适用于若干个控件执行的操作相似的场合,控件组共享同样的事件过程.下面是小编为大家带来的关于控件数组的知识,欢迎阅读. ...

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

    数组的应用范围非常广泛,灵活运用可以提高程序的开发效率,减少重复代码.例如,本实例通过按钮数组来管理界面中的所有按钮控件,从而使用最少的代码实现了模拟的计算器界面.实例运行效果如图 本实例的关键点在于 ...

  6. C#,桌面编程入门(01)——按钮Button属性与事件、动态创建、快捷键、控件数组及自定义Button

    本文是<桌面编程入门>系列文章的开山之篇. <桌面编程入门>系列文章主要介绍桌面编程的各种组件,Button,ComboBox,Panel,WebBrowser...... 类 ...

  7. java控件数组_java通过复选框控件数组实现添加多个复选框控件示例分享

    思路如下: 创建JPanel面板对象: 使用JPanel类的setLayout(0,4)方法设置网格布局管理器,即列数为4,行数自动调节: 创建一个字符串型一维数组作为控件文本数组: 创建一个JChe ...

  8. java控件数组_java通过复选框控件数组实现添加多个复选框控件

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

  9. java checkbox数组_Java通过复选框控件数组实现添加多个复选框控件

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

  10. java控件数组_在C# WinForm程序中创建控件数组及相应的事件处理

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

最新文章

  1. 合肥工业大学—SQL Server数据库实验一:数据库的创建和删除
  2. 零配置 之 Spring 概述
  3. Leetcode--5. 最长回文子串(java)
  4. 信息学奥赛C++语言:杨辉三角形
  5. Python学习心路历程
  6. [转载] Java static关键字详解
  7. wireshark tshark抓包筛选并存入文件 Centos linux 命令行抓包 yum安装wireshark
  8. WebLogic—安装
  9. c语言实现循环队列初始化从键盘输入,2017年12月计算机二级考试C语言考前提分卷(2)...
  10. GIS当中矢量数据、影像数据、地形数据等常见数据格式的介绍
  11. Manjaro 安装xmind 8
  12. “沉浸式”住宿体验——酒店的新瓶,民宿的老酒
  13. python 生成二维码图片
  14. 使用apache的ftpserver搭建ftp服务器
  15. java jlist 添加滚动条_JList滚动条问题
  16. PMCAFF微课17期 - 教你如何用数据玩转移动互联网APP运营(笔记下载)
  17. 【算法随记三】小半径中值模糊的急速实现(16MB图7.5ms实现) + Photoshop中蒙尘和划痕算法解读。...
  18. OVQQ框架-一个免费的QQ机器人框架
  19. 二维数组所有元素初始化为0
  20. 吉林大学软院夏令营面试

热门文章

  1. 魔乐科技安卓开发教程----李兴华----11使用摄像头拍照
  2. 华为很好,但我不愿再回去
  3. win7系统提示0x80072F8F错误代码的解决方法(已经验证)
  4. 两种启动tomcat的方法
  5. 超370亿美元资金布局NFT市场
  6. 用pycharm创建第一个django项目
  7. linux windows下oen***客户端的用法
  8. BlackBerry Pushmail介绍
  9. 双非菜鸡3个月收割头条大数据offer,方向真的比努力更重要!
  10. vue服务端渲染(ssr)与普通vue的区别,ssr的基本使用