既然选择了码农,便只顾肩酸背痛。
认认真真敲代码,踏踏实实写博客。
?
之前学习Java的时候写了一个计算器,但是只是个半成品,而且代码实在是不忍直视。
所以决定重写一个,从优化代码做起——至少要看起来简洁。
程序用Java的swing实现,本篇只展示界面,待写完运算方法再补充一篇。
界面效果展示:
?
?
?
「Talk is cheap. Show me the code.」
OK,this is the code:
class="java" name="code">import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; public class Calculator extends JFrame { JLabel jl = new JLabel();// 用于显示的文本框 public static void main(String args[]) { Calculator c = new Calculator(); c.initUI(); } // 初始化计算器界面 public void initUI() { // 计算器界面的基本设置 this.setSize(368, 604);// 大小为368*604(考虑边框) this.setTitle("Calculator");// 设置窗口标题 this.setDefaultCloseOperation(3);// 设置关闭操作 this.setLayout(new FlowLayout(1, 0, 0));// 居中对齐,组件之间纵向、横向间距为0 this.setResizable(false);// 不可改变窗口大小 this.setLocationRelativeTo(null);// 居中显示窗口 // 添加About菜单 JMenuBar jmB = new JMenuBar();// 菜单栏 JMenu jm0 = new JMenu("About");// 菜单 JMenuItem jmi0 = new JMenuItem("Developer");// 菜单项 jmi0.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JFrame jf = new JFrame(); jf.setSize(200, 150); jf.setDefaultCloseOperation(2); jf.setTitle("Developer"); jf.setResizable(false); jf.setLayout(new FlowLayout(0, 20, 20));// 左对齐;内部组件横向、纵向间距都为20 jf.setLocationRelativeTo(null); jf.add(new JLabel("Name: Green Lv")); jf.add(new JLabel("Version: v1.0.0")); jf.setVisible(true); } }); jm0.add(jmi0); jmB.add(jm0); this.setJMenuBar(jmB); // 360*200的文本框,用于显示内容 jl.setPreferredSize(new Dimension(360, 200)); jl.setBackground(Color.lightGray); this.add(jl); // 90*70的按钮,共18个 String buttonText[] = { "C", "←", "÷", "×", "7", "8", "9", "-", "4", "5", "6", "+", "1", "2", "3", "M", "0", "." }; JButton jb[] = new JButton[18]; for (int i = 0; i < 18; i++) { jb[i] = new JButton(buttonText[i]); jb[i].setPreferredSize(new Dimension(90, 70));// 设置按钮大小 jb[i].setBackground(Color.white);// 设置背景色 jb[i].addActionListener(new MyListener(jl, jb[i]));// 为按钮添加监听器(监听器是实现计算器的部分,需要另写一个class) this.add(jb[i]); } // 等号按钮 JButton jbEqualTo = new JButton("="); jbEqualTo.setPreferredSize(new Dimension(180, 70)); jbEqualTo.setBackground(Color.orange); this.add(jbEqualTo); this.setVisible(true);// 设置窗体可见 } }
?