欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java按钮控件数组实现计算器界面示例分享

程序员文章站 2024-02-21 23:58:58
思路如下: 创建一个类,通过extends使其继承窗体类jframe;创建一个jframe对象,使用jframe类的setvisible()方法设置窗体可见;在构造函数中...

思路如下:

创建一个类,通过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]); // 将按钮添加到面板中
            }
        }
    }

}