/**
*
* 实现了系统计算器连续按"="和按"+","-","*","/"进行累记运算的模式
*
* */
import javax.swing.*
import java.awt.*
import java.awt.event.*
public class CalculatorFrame extends JFrame {
private JTextField txtDis = new JTextField("0", 16)//显示文本框
private JButton[] btnGrp = new JButton[17]//17个按钮
private JPanel jpnMain = new JPanel()//主面板
private JPanel jpnNorth = new JPanel()//上面板
private JPanel jpnSouth = new JPanel()//下面板
private double numSaved//保存的前一个数
private String operator = ""//保存的运算符号
private String lastPress = ""//上一次按的按钮("数字","运算符" 或 "等号")
/*构造函数*/
public CalculatorFrame() {
//窗口设置
setTitle("计算器")
setSize(210, 250)
buttonInit()//按钮初始化
//主面板设置
add(jpnMain)
jpnMain.setLayout(null)
jpnMain.add(jpnNorth)
jpnMain.add(jpnSouth)
jpnMain.add(btnGrp[15])
btnGrp[15].setBounds(8, 180, 188, 30)//添加“拿汪丛=”按钮
//上面板设置
jpnNorth.setBounds(8, 10, 190, 30)
jpnNorth.add(txtDis)
txtDis.setHorizontalAlignment(JTextField.RIGHT)//设置文本右对齐
txtDis.setEditable(false)
//下面板设置
jpnSouth.setBounds(8, 60, 190, 120)
jpnSouth.setLayout(new GridLayout(4, 4))
addSouthJpn()//添加17个按钮
//添加监听器
addListener()
}
/*17个按钮显示值初始化*/
public void buttonInit() {
for (int i = 0i <10i++) {
btnGrp[i] = new JButton("" + i)
}
btnGrp[10] = new JButton(".")
btnGrp[11] = new JButton("+")
btnGrp[12] = new JButton("-")
btnGrp[13] = new JButton("*")
btnGrp[14] = new JButton("/")
btnGrp[15] = new JButton("=")
btnGrp[16] = new JButton("C")
for (int i = 0i <17i++) {
btnGrp[i].setFont(new Font("Dialog", Font.PLAIN, 18))
}
}
/*按网格顺序添加消樱除“=”外16个按钮*/
public void addSouthJpn() {
int[] index={7,8,9,14,4,5,6,13,1,2,3,12,0,16,10,11}
for(int i=0i<index.lengthi++){
jpnSouth.add(btnGrp[index[i]])
}
}
/*给按钮添加监听器*/
public void addListener() {
/陵基/给数字按钮添加监听器,btnGrp[10]是"."号
for (int i = 0i <= 10i++) {
btnGrp[i].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String button = ( (JButton) e.getSource()).getText()
//如果有运算 *** 作符或文本框数字为0并且按钮不为“。”
if (lastPress == "运算符" || lastPress == "等号"
|| txtDis.getText().equals("0") &&button != ".") {
txtDis.setText("")//清空文本框
}
if (lastPress == "等号") {
operator = ""//上次按的是=号,这次按数字,清空运算符
}
if (button == "." &&txtDis.getText().indexOf(".") != -1) {
} //这次按的是.文本框内已经包含.这种情况什么都不做,防止.重复
else {
txtDis.setText(txtDis.getText() + button)//文本框添加内容
}
lastPress = "数字"
}
})
}
//给运算 *** 作符按钮添加监听器
for (int i = 11i <= 14i++) {
btnGrp[i].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (operator != "" &&lastPress == "数字") { //运算符不为空并且之前按的是数字
(btnGrp[15].getActionListeners())[0].actionPerformed(e)//手动调用=号的监听响应实现=号功能
}
numSaved = Double.parseDouble(txtDis.getText())//保存当前文本框的数字
operator = ( (JButton) e.getSource()).getText()//保存运算 *** 作符
lastPress = "运算符"//添加运算符标记,下次文本框清空
}
})
}
//给等号按钮添加监听器
btnGrp[15].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
double numNow = Double.parseDouble(txtDis.getText())//当前文本框的数字
//运算符匹配 *** 作
if (operator.equals("+")) {
txtDis.setText( (numSaved + numNow) + "")
}
else if (operator.equals("-")) {
if (lastPress == "等号") { //累记运算时的算法(一直按等号)
txtDis.setText( (numNow - numSaved) + "")
}
else {
txtDis.setText( (numSaved - numNow) + "")
}
}
else if (operator.equals("*")) {
txtDis.setText( (numSaved * numNow) + "")
}
else if (operator.equals("/")) {
if (lastPress == "等号") { //累记运算时的算法(一直按等号)
txtDis.setText( (numNow / numSaved) + "")
}
else {
txtDis.setText( (numSaved / numNow) + "")
}
}
if (lastPress != "等号") { //是第一次,以后按累记运算
numSaved = numNow//保存数改为后一个数
}
lastPress = "等号"//添加运算符标记,下次文本框清空
}
})
//给复位符“C”按钮添加监听器
btnGrp[16].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
txtDis.setText("0")
numSaved = 0
operator = ""
lastPress = ""
}
})
}
}
=====================第二个类=============================
import javax.swing.*
public class Test {
public Test() {
CalculatorFrame calframe = new CalculatorFrame()//新窗口
calframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)//设置关闭
calframe.setLocationRelativeTo(null)//窗口置中
calframe.setVisible(true)//显示窗口
calframe.setDefaultLookAndFeelDecorated(false)//使用windows视感
calframe.setResizable(false)//窗口不可调大小
}
public static void main(String[] args) {
Test test = new Test()
}
}
对于 Python 中的 GUI 程序,一般可以从辩数三个要素来考虑,它们是:输入:指用户在界面上进行的交互 *** 作,例如鼠标点击、键盘输入等。在 Python 的 GUI 程序中,常常使用组件如文本框、按钮、下拉框等来接收用户的输入。
处理:指对用户输入的数据或 *** 毁档作进行处理,一般会包括数据的验证、计算、存储等过程。在 Python 的 GUI 程序中,可以使用函数、类等来实现数据的处理。
输出:指将处理后的数据或结果输出到界面上,让用户进行查看或 *** 作。在 Python 的 GUI 程序中,可以使用标签、文本框、列表框等组件来显示处理结果。
总之,Python 中的 GUI 程序需要考虑用户输入、数据处理和结果输出等三个要素,通过合理的设计和使携余首用相应的组件和工具,可以实现用户友好的交互体验和高效的数据处理功能。
GUI代表graphics user interface 一般翻译为图形用户接口或图形用户界面
GUI就是图形用户界面,是基于图形的界面,windows就是一个图形用户界面的 *** 作系统,而DOS是基于命令提示符的 *** 作系统,GUI编程就是编出一个图形用户界面的软件.
补充 图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机 *** 作用宴蚂户界面。
与早期计算机使用的命令行界面相比,图形界面对于用户来说在裂斗视觉上更易于接受。然而这界面若要通过在显示屏的特定位置,以”各种美观而不单调的视觉消息“提示用户”状态的改肆祥磨变“,势必得比简单的消息呈现花上更多的计算能力。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)