아이디어는 다음과 같습니다.
클래스를 생성하고 확장을 통해 JFrame 클래스 형식을 상속합니다.
JFrame 객체를 생성하고 JFrame 클래스의 setVisible() 메서드를 사용하여
생성자에서 super() 메서드를 사용하여 상위 클래스의 생성 메서드를 상속합니다.
양식 제목을 설정하려면 setTitle() 메서드를 사용하세요. setBounds() 메서드를 사용하여 양식의 표시 위치와 크기를 설정합니다.
양식 닫기 버튼의 동작을 설정하려면 setDefaultCloseOperation() 메서드를 사용하세요.
GridLayout을 사용하여 그리드 레이아웃 관리자 개체를 만듭니다. 🎜>GridLayout 클래스의 setHgap() 메서드를 사용하여 구성 요소의 가로 간격을 설정합니다.
GridLayout 클래스의 setVgap() 메서드를 사용하여 구성 요소의 세로 간격을 설정합니다.
JPanel 컨테이너 개체를 만듭니다. ;
JPanel 클래스의 setLayout() 메서드를 통해 그리드 레이아웃 관리자를 사용하도록 컨테이너를 설정합니다.
문자열 유형 II 차원 배열을 만들고 해당 값을 계산기의 해당 버튼에 표시되는 값으로 초기화합니다.
JButton 유형의 2차원 배열을 생성하고 이전 문자열 유형의 2차원 배열에 해당하는 공간을 할당합니다.
문자를 트래버스합니다. 문자열 2차원 배열의 각 요소를 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]); // 将按钮添加到面板中 } } } }