JAVA GUI编程实践:简易计算器实现

需积分: 10 3 下载量 110 浏览量 更新于2024-10-29 1 收藏 162KB DOC 举报
该资源是一个使用Java编程语言编写的个人简易计算器程序,主要涉及GUI(图形用户界面)编程,包括面板(JPanel)、单选按钮(JRadioButton)和对话框等组件的使用。开发者在实现过程中对GUI组件的运用进行了实践,尤其是单选按钮的事件处理,可能经历了一定的调试过程。 在Java中,GUI编程通常通过Java Swing库来实现。在这个简易计算器程序中,`Calculator` 类是主类,它继承自 `JFrame` 并实现了 `ActionListener` 接口,这意味着它能够处理用户与界面组件的交互事件。`main` 方法创建了一个 `MyCal` 对象,即启动了计算器窗口。 `MyCal` 类是实际的计算器窗口类,它包含了一些关键组件的实例,如标签(JLabel)、文本字段(JTextField)、单选按钮(JRadioButton)和两个面板(JPanel)。这些组件用于显示和接收用户输入,以及展示运算符选择。例如,`labOne` 和 `labTwo` 用于显示“数字1”和“数字2”的标签,`txtOne` 和 `txtTwo` 是用户输入数字的文本字段,而 `radAdd`, `radSub`, `radMul`, `radDiv` 分别代表加法、减法、乘法和除法的单选按钮。 单选按钮被组织成一个组,这样可以确保每次只有一个按钮被选中。每个按钮都设置了不同的操作命令,这在处理按钮点击事件时非常有用,可以通过操作命令来判断用户选择了哪种运算。未展示的代码部分很可能是实现这些按钮的监听器,以及计算逻辑,包括获取文本字段中的数值,根据用户选择的运算符进行计算,并将结果显示在 `txtThree` 中。 此计算器程序的实现还涉及布局管理,如设置组件的位置和大小,这里使用了 `null` 布局,意味着开发者手动控制每个组件的位置。在实际应用中,更推荐使用如 FlowLayout、GridLayout 或 BorderLayout 这样的布局管理器,以使界面更易于维护和跨平台兼容。 这个项目对于初学者来说是一个很好的实践,涵盖了Java GUI编程的基本元素,并提供了实际的事件处理体验。通过这个程序,开发者可以加深对Java Swing的理解,进一步学习和掌握如何创建交互式的图形界面。同时,为了提高代码的可读性和可维护性,还可以考虑将不同功能的部分(如按钮事件处理和计算逻辑)封装成单独的方法。
2012-10-17 上传
package chapter11_3; import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; public class Calculator extends JFrame implements ActionListener { private String[] str = { "7", "8", "9", "/", "sqrt", "4", "5", "6", "*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" }; private JTextField tf_out; private JButton jb_bk, jb_ce, jb_c; private JButton[] jb_key; private char ch = '#'; private boolean can = false; private double num1; public void creatGUI() { tf_out = new JTextField(); tf_out.setHorizontalAlignment(JTextField.RIGHT); tf_out.setColumns(18); tf_out.setEditable(false); // 设置输出不可编辑 tf_out.setText("0"); this.add(tf_out, BorderLayout.NORTH); JPanel p = new JPanel(new BorderLayout(3, 8)); JPanel p1 = new JPanel(new GridLayout(1, 3, 3, 10)); p.add(p1, "North"); jb_bk = new JButton("Backspace"); jb_bk.setForeground(Color.RED); jb_bk.addActionListener(this); jb_ce = new JButton("CE"); jb_ce.setForeground(Color.RED); jb_ce.addActionListener(this); jb_c = new JButton("C"); jb_c.setForeground(Color.RED); jb_c.addActionListener(this); p1.add(jb_bk); p1.add(jb_ce); p1.add(jb_c); JPanel p2 = new JPanel(new GridLayout(4, 5, 3, 3)); p.add(p2, BorderLayout.CENTER); jb_key = new JButton[str.length]; for (int i = 0; i < str.length; i++) { jb_key[i] = new JButton(str[i]); jb_key[i].addActionListener(this); if (i == 3 || i == 8 || i == 13 || i == 18 || i == 19) { jb_key[i].setForeground(Color.RED); } else { jb_key[i].setForeground(Color.BLUE); } p2.add(jb_key[i]); } this.add(p, BorderLayout.CENTER); this.setTitle("计算器"); this.setIconImage(new ImageIcon("image/1.jpg").getImage()