既然选择了码农,便只顾肩酸背痛。
认认真真敲代码,踏踏实实写博客。
?
之前学习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);// 设置窗体可见
}
}
?