そのアイデアは次のとおりです:
クラスを作成し、extends を通じてフォーム クラス JFrame を継承させます。
JFrame オブジェクトを作成し、JFrame クラスの setVisible() メソッドを使用してフォームを表示するように設定します。コンストラクターでは、super() メソッドを使用します。 親クラスの構築メソッドを継承します。
setTitle() メソッドを使用して、フォームのタイトルを設定します。
setBounds() メソッドを使用して、フォームの表示位置とサイズを設定します。
setDefaultCloseOperation() メソッドを使用して、フォームの閉じるボタンのアクションを終了に設定します。
GridLayout を使用して、グリッド レイアウト マネージャー オブジェクトを作成します。
GridLayout クラスの setHgap() メソッドを使用して、コンポーネントの水平方向の間隔を設定します。
GridLayout クラスの setVgap() メソッドを使用して、コンポーネントの垂直方向の間隔を設定します。
JPanel コンテナ オブジェクトを作成します。
JPanel を通じて、クラスの setLayout() メソッドは、グリッド レイアウト マネージャーを使用するようにコンテナを設定します。文字列型の 2 次元配列を作成し、その値を電卓の対応するボタンに表示される値に初期化します。
JButton 型の 2 次元配列を作成し、前の文字列型の 2 次元配列に対応する領域を割り当てます。次元配列;
文字列型の 2 次元配列を走査し、その各要素を JButton 型の 2 次元配列の対応するボタンに割り当て、各ボタンをイベントの追加に割り当てて、対応する値がイベントに表示されるようにします。最後に、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]); // 将按钮添加到面板中 } } } }