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

本实例的关键点在于GridLayout布局管理器的应用,通过它可以自动完成控件的布局与大小控制;否则,还要单独创建控制每个控件位置与大小的代码,其代码复杂度可想而知。通过GridLayout布局管理器,只需要指定布局的行列数量即可。下面介绍GUI如何使用GridLayout布局管理器。 创建指定行列数量的布局管理器 可以在GridLayout类的构造方法中传递两个int类型的参数,分别指定布局的行数与列数,其方法声明如下: public GridLayout(int rows, int cols) 参数说明 rows:布局的行数。 cols:布局的列数。 设置容器的布局管理器 创建容器布局管理器后,可以把它添加到某个容器的layout属性中,这需要调用容器的设置布局管理器的方法来实现,其语法声明如下: public void setLayout(LayoutManager mgr) 参数说明 mgr:布局管理器对象。

在项目中创建ButtonArrayExample窗体类。在窗体中添加一个文本框控件用于模拟计算器的液晶屏,然后在构造方法中设置窗体标题、布局管理器,并创建JButton控件的二维数组,其中每个数组元素都初始化为一个按钮控件,同时再声明一个按钮名称的字符串数组,这两个数组共同初始化界面中的所有按钮控件。代码如下:

import java.awt.Container; import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.UIManager; import javax.swing.JTextField; import java.awt.BorderLayout; import java.awt.Dimension; import javax.swing.SwingConstants;

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]); // 创建按钮对象panel.add(buttons[row][col]); // 将按钮添加到面板中}}
}

}

心法领悟:用数组管理重复类型的数据。 像本实例的界面设计一样,程序开发中有很多重复类型的数据,在界面设计器中可以清晰地看出重复性的按钮控件。

转载于:https://my.oschina.net/u/3212883/blog/840462

按钮控件数组实现计算器界面相关推荐

  1. java按钮数组_Java按钮控件数组实现计算器界面

    编写程序,通过按钮数组来管理界面中的所有按钮控件,从而使用最少的代码实现模拟的计算器界面. 思路如下: 创建一个类,通过extends使其继承窗体类JFrame: 创建一个JFrame对象,使用JFr ...

  2. java调用数组计算器_java按钮控件数组实现计算器界面示例分享

    思路如下: 创建一个类,通过extends使其继承窗体类JFrame: 创建一个JFrame对象,使用JFrame类的setVisible()方法设置窗体可见: 在构造函数中,使用super()方法继 ...

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

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

  4. html 复选按钮 全选,JS实现复选按钮控件全选和批量操作

    2.1 准备数据 新建普通报表,新建数据库查询数据集 ds1,SQL 语句为:SELECT * FROM Sales 2.2 设计表格 如下图设计填报模板的表格样式,其中 A3 单元格的左父格为 B3 ...

  5. VB编程:全局变量控件数组实例简单计算器-12

    运行效果: 程序代码: Dim current, prev, choice    '全局变量 '-------------这段代码是个额外加上的小测试可以忽略---------- '--------- ...

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

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

  7. 【Qt】Qt 开发桌面程序 ( Qt 版本 5.14.2 | 编辑 Qt 桌面按钮控件 | 修改按钮文本 | 为按钮添加点击事件 | 系统调用 | 去掉系统调用命令窗口 )

    文章目录 一.添加按钮控件 二.修改按钮文本 三.为按钮添加点击事件 ( 弹出对话框 ) 四.为按钮添加点击事件 ( 打开记事本 ) 五.为按钮添加点击事件 ( 打开计算器 ) 六.去掉系统调用时弹出 ...

  8. 利用.NET绘图技术制作水晶按钮控件(转)

    UI(User Interface)编程在整个项目开发过程中是个颇为重要的环节,任何好的解决方案若没有良好的用户界面呈现给最终用户,那么就算包含了最先进的技术也 不能算是好程序.UI编程体现在两个方面 ...

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

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

最新文章

  1. Mini T-block——数据中心界的U盘
  2. 专注NLP、推荐等AI算法招聘群,慢者无,包括几乎所有公司最新信息
  3. eclipse经常出现弹窗Refreshing workspace
  4. 谷歌浏览器安装插件的方法步骤
  5. 专属于程序员的理财建议,抱走不谢
  6. 51单片机串口通信的程序实现与Proteus仿真
  7. 商城系统必备营销工具(五)——积分商城
  8. PCB设计之线宽、线距规则设置
  9. 【数据结构和算法】赫夫曼树 | 实战演练(二)
  10. 26、网络丢包怎么办?这些解决办法不得不知
  11. Velocity最简易的Servlet加载
  12. 小程序助力博物馆餐厅,用“艾”打造品牌
  13. PHP反序列化魔术方法
  14. racket android,RacketGhost | F-Droid - Free and Open Source Android App Repository
  15. Python-OpenCV相机标定、张正友标定法
  16. 清除windows系统垃圾文件简易脚本(bat)
  17. 小奔的Markdown表格素材库
  18. 震撼大数据!80后年薪多少,才能摆脱中年危机?
  19. 开发者把写了 12 年的软件,开源了!
  20. vlc(window)分离mp4文件中的音视频

热门文章

  1. iphone文件连不上电脑服务器,iphone通过USB连接电脑无法上网如何解决
  2. uni-app如何动态绑定背景图片资源
  3. UWA Pipeline 功能详解|如何快速创建UWA服务
  4. HBase应该知道的
  5. 排队论---单服务台负指数分布排队系统的分析
  6. 海外问卷调查答题技巧,纯干货分享,新手小白看过来
  7. 【sql】统计温度比前一天高的id Rising Temperature
  8. 电子日历的设计与实现
  9. SQL-正序倒序查询
  10. html5如何鼠标右键无效,鼠标右键没反应的解决技巧