运用基于Eclipse的WindowBuilder创建的GUI项目
效果如图:
代码
窗口部分
import java.awt.EventQueue;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.JFrame;
import javax.swing.JTextField;
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JPanel;
import java.awt.GridLayout;
import javax.swing.SwingConstants;
import java.awt.Component;
import java.awt.Font;
public class xz implements ActionListener {
private JFrame frame;
private JTextField textField;
private JPanel panel;
private JButton button;
private JButton button_1;
private JButton button_2;
private JButton button_3;
private JButton button_4;
private JButton button_5;
private JButton button_6;
private JButton button_7;
private JButton button_8;
private JButton button_9;
private JButton button_10;
private JButton button_11;
private JButton button_12;
private JButton button_13;
private JButton button_14;
String c;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
xz window = new xz();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public xz() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
textField = new JTextField();
frame.getContentPane().add(textField, BorderLayout.NORTH);
textField.setColumns(10);
panel = new JPanel();
frame.getContentPane().add(panel, BorderLayout.CENTER);
panel.setLayout(new GridLayout(3, 0, 0, 0));
button = new JButton("1");
button.setFont(new Font("幼圆", Font.PLAIN, 17));
panel.add(button);
button_1 = new JButton("2");
button_1.setFont(new Font("幼圆", Font.PLAIN, 17));
panel.add(button_1);
button_2 = new JButton("3");
button_2.setFont(new Font("幼圆", Font.PLAIN, 17));
panel.add(button_2);
button_6 = new JButton("4");
button_6.setFont(new Font("幼圆", Font.PLAIN, 17));
panel.add(button_6);
button_8 = new JButton("5");
button_8.setFont(new Font("幼圆", Font.PLAIN, 17));
panel.add(button_8);
button_5 = new JButton("6");
button_5.setFont(new Font("幼圆", Font.PLAIN, 17));
panel.add(button_5);
button_3 = new JButton("7");
button_3.setFont(new Font("幼圆", Font.PLAIN, 17));
panel.add(button_3);
button_4 = new JButton("8");
button_4.setFont(new Font("幼圆", Font.PLAIN, 17));
panel.add(button_4);
button_7 = new JButton("9");
button_7.setFont(new Font("幼圆", Font.PLAIN, 17));
panel.add(button_7);
button_9 = new JButton("0");
button_9.setFont(new Font("幼圆", Font.PLAIN, 17));
panel.add(button_9);
button_10 = new JButton("+");
button_10.setFont(new Font("宋体", Font.PLAIN, 17));
panel.add(button_10);
button_11 = new JButton("-");
button_11.setFont(new Font("宋体", Font.PLAIN, 17));
panel.add(button_11);
button_12 = new JButton("*");
button_12.setFont(new Font("宋体", Font.PLAIN, 17));
panel.add(button_12);
button_13 = new JButton("/");
button_13.setFont(new Font("宋体", Font.PLAIN, 17));
panel.add(button_13);
button_14 = new JButton("=");
button_14.setFont(new Font("宋体", Font.PLAIN, 17));
panel.add(button_14);
button.addActionListener(this);
button_1.addActionListener(this);
button_2.addActionListener(this);
button_3.addActionListener(this);
button_4.addActionListener(this);
button_5.addActionListener(this);
button_6.addActionListener(this);
button_7.addActionListener(this);
button_8.addActionListener(this);
button_9.addActionListener(this);
button_10.addActionListener(this);
button_11.addActionListener(this);
button_12.addActionListener(this);
button_13.addActionListener(this);
button_14.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
int jia=0,jian=0,chen=0,chu=0;
if(e.getSource()==button) textField.setText(textField.getText()+"1");
else if(e.getSource()==button_1) textField.setText(textField.getText()+"2");
else if(e.getSource()==button_2) textField.setText(textField.getText()+"3");
else if(e.getSource()==button_3) textField.setText(textField.getText()+"7");
else if(e.getSource()==button_4) textField.setText(textField.getText()+"8");
else if(e.getSource()==button_5) textField.setText(textField.getText()+"6");
else if(e.getSource()==button_6) textField.setText(textField.getText()+"4");
else if(e.getSource()==button_7) textField.setText(textField.getText()+"9");
else if(e.getSource()==button_8) textField.setText(textField.getText()+"5");
else if(e.getSource()==button_9) textField.setText(textField.getText()+"0");
else if(e.getSource()==button_10) {
textField.setText(textField.getText()+"+");
c = "+";
}
else if(e.getSource()==button_11) {
textField.setText(textField.getText()+"-");
c = "-";
}
else if(e.getSource()==button_12) {
textField.setText(textField.getText()+"*");
c = "*";
}
else if(e.getSource()==button_13) {
textField.setText(textField.getText()+"/");
c = "/";
}
else if(e.getSource()==button_14)
{
int a,b;
String regex = "[\\p{Punct}]+";
String nums[] = textField.getText().split(regex);
a = Integer.parseInt(nums[0]);
b = Integer.parseInt(nums[1]);
caculate test = new caculate(a,b,c);
textField.setText(textField.getText()+"="+test.setresult());
}
}
}
算法部分
public class caculate {
int a,b;
String c;
int result=0;
caculate(int a,int b,String c){
this.a=a;
this.b=b;
this.c=c;
}
public String setresult(){
switch(c)
{
case "+":
result=a+b;
break;
case "-":
result=a-b;
break;
case "*":
result=a*b;
break;
case "/":
result=a/b;
break;
}
return String.valueOf(result);
}
}
心得体会
在学校学习GUI4Java后,装了一天windowbuilder,因为中间出了些许差错,又花了一天时间敲出这个简易计算器,其中还需要完善的是功能算法以及异常部分。
知识点:
- Swing 常用组件的使用方法
- Java GUI 布局
- Java 事件设计
- MVC 模式编程
其中,要熟练应用MVC设计结构:模型,视图,控制器。在写代码的过程中,学习到了如何将字符串分解以及应用处理,包括结果显示部分,收获颇丰。