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]); // 将按钮添加到面板中
}
}
}
}