实例035 使用按钮控件数组实现计算器界面
实例说明
控件数组的应用范围非常广泛,合理使用控件数组可以提高程序开发效率。本实例将应用按钮控件数组来管理界面中的所有按钮控件,从而使用最少的代码实现模拟的计算器界面。实例的运行效果如图5.5所示。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| package com.mingrisoft;
import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.GridLayout;
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 { 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]); } } } }
|
技术要点
本实例的关键点在于GridLayout
布局管理器的应用,通过它可以自动完成控件的布局与大小控制,否则,程序还要单独创建控制每个控件位置与大小的代码,其代码复杂度可想而知。通过GridLayout
布局管理器,只需要指定布局的行列数量即可。下面介绍一下GUI
如何使用GridLayout
布局管理器。
1. 创建指定行列数量的布局管理器
可以在GridLayout
类的构造方法中传递两个int
类型的参数分别指定布局的行数与列数。其方法的声明如下:
1
| public GridLayout(int rows, int cols)
|
参数说明
2. 设置容器的布局管理器
创建容器布局管理器后,可以把它添加到某个容器的layout
属性中,这需要调用容器的设置布局管理器的方法来实现。其方法的声明如下:
1
| public void setLayout(LayoutManager mgr)
|
参数说明