awt和swing做的计算器

来源:互联网 发布:java创建对象关键字 编辑:程序博客网 时间:2024/05/16 01:11
import java.awt.Color;import java.awt.Component;import java.awt.Dimension;import java.awt.Font;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JTextField;import com.geowind.controller.Controller;public class MainUI implements ActionListener{//表格包布局约束private GridBagConstraints c = null;String[][] names = {{ "MC", "MR", "MS", "M+", "M-" },{ "←", "CE", "C", "±", "√" }, { "7", "8", "9", "/", "%" },{ "4", "5", "6", "*", "1/x" },{ "1", "2", "3", "-", "=" },{ "0", "", ".", "+","" }};private JTextField field;//窗体private JFrame frame;public MainUI() {// 创建约束c = new GridBagConstraints();c.insets= new Insets(5, 5, 5, 5);//表格的间隔c.fill = GridBagConstraints.BOTH;//表格的拉伸为横纵向都拉伸// 创建窗体frame = new JFrame("计算器");// 设置此窗体的布局为网格包布局frame.setLayout(new GridBagLayout());//输入框field = new JTextField();field.setText("0  ");//设置输入框初始值为0field.setEditable(false);//设置输入框不可编辑field.setBackground(Color.white);//设置输入框的背景色field.setPreferredSize(new Dimension(0, 50));//设置输入框的大小field.setHorizontalAlignment(JTextField.RIGHT);//设置文本右边对齐field.setFont(new Font("宋体", Font.BOLD, 20));//设置字体//将输入框添加到第零个位置addComponent(field, 0, 0, 5, 1);//添加按钮for (int row = 1; row < 7; row++) {for (int col = 0; col < 5; col++) {JButton btn = new JButton(names[row - 1][col]);btn.addActionListener(this);//调整按钮大小btn.setPreferredSize(new Dimension(40, 30));//设置按钮边框和按钮中文本的间距btn.setMargin(new Insets(0, 0, 0, 0));//设置按钮的颜色btn.setBackground(new Color(231, 249, 209));//为按钮指定样式if (row == 5 && col == 4) {addComponent(btn, col, row, 1, 2);} else if (row == 6 && col == 0) {addComponent(btn, col, row, 2, 1);} else if(!((row == 6 && col == 4) || (row == 6 && col == 1))){//当不为(6, 1)和(6, 4)位置的按钮时addComponent(btn, col, row, 1, 1);}}}// 设置窗体的属性frame.pack();//根据组件调整窗体大小frame.setDefaultCloseOperation(3);frame.setLocationRelativeTo(null);//居中frame.setVisible(true);}/** * 根据指定约束添加按钮 *  * @param btn *            按钮 * @param c *            约束 */public void addComponent(Component com, int gridx, int gridy,int gridwidth, int gridheight) {c.gridx = gridx;c.gridy = gridy;c.gridwidth = gridwidth;c.gridheight = gridheight;frame.add(com, c);}public static void main(String[] args) {MainUI g = new MainUI();}@Overridepublic void actionPerformed(ActionEvent e) {//获取响应的按钮JButton btn = (JButton)e.getSource();//拿到按钮上的文本String text = btn.getText();//输入框中的表达式String oldText = field.getText();if("=".equals(text)){Controller c = new Controller();double result = c.getResult(c.toPostExpression(oldText));field.setText(result+"");}else{field.setText(oldText + text);}}}
<img src="http://img.blog.csdn.net/20150225133649871?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2lsZW5jZTIwMTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
用GridBagConstraints做的UI布局明显好看的多
</pre><pre name="code" class="java">
</pre><pre name="code" class="java">
</pre><pre name="code" class="java">

0 0
原创粉丝点击