1.编写程序,创建如下图所示的图形界面。(要求实现功能)
最终效果图:
源代码:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.TextField;
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.JPanel;
import javax.swing.JTextPane;
public class MyCaluator extends JFrame{
/**
*
*/
private static final long serialVersionUID = 1L;
MyCaluator(String title){
super(title);
//JPane以BorderLayout的形式布局
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
JPanel p3 = new JPanel();
Font myFont1 = new Font("serif",Font.BOLD,28);
Font myFont2 = new Font("arial",Font.PLAIN,24);
JPanel[] panel = {p1,p2,p3};
Color[] color = {Color.pink,Color.cyan,Color.magenta};
for(int i = 0;i < panel.length;i++) {
panel[i].setBackground(color[i]);
panel[i].setLayout(new GridLayout(3,1));
}
//JPanel1 的组件
JLabel p1_text1 = new JLabel(" 加数1: ");
JLabel p1_text2 = new JLabel(" 加数2: ");
p1_text1.setFont(myFont1);
p1_text2.setFont(myFont1);
p1.add(p1_text1);
p1.add(p1_text2);
JButton p1_btn = new JButton("求和");
p1.add(p1_btn);
p1_btn.setFont(new Font("Dialog", Font.PLAIN, 18));
//JPanel2 的组件
TextField txt1 = new TextField();
TextField txt2 = new TextField();
TextField txt3 = new TextField();
txt1.setFont(myFont2);
txt2.setFont(myFont2);
txt3.setFont(myFont2);
p2.add(txt1);
p2.add(txt2);
p2.add(txt3);
//JPanel3 的组件
JLabel p3_txt1 = new JLabel(" ");
JLabel p3_txt2 = new JLabel(" ");
p3_txt1.setFont(myFont1);
p3_txt2.setFont(myFont1);
p3.add(p3_txt1);
p3.add(p3_txt2);
JButton p3_btn = new JButton("清除");
p3.add(p3_btn);
p3_btn.setFont(new Font("Dialog", Font.PLAIN, 18));
//设置JFrame,添加3个Panel
add(BorderLayout.WEST,p1);
add(BorderLayout.CENTER,p2);
add(BorderLayout.EAST,p3);
setBackground(Color.pink);
setBounds(400,300, getDefaultCloseOperation(), getDefaultCloseOperation());
setSize(500,400);
setVisible(true);
//按钮 求和 的事件:
p1_btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String num1 = txt1.getText();
String num2 = txt2.getText();
//判断是否为空
if("".equals(num1)) {
txt1.requestFocus();
return;
}
if("".equals(num2)) {
txt2.requestFocus();
return;
}
//判断是否为字符串
boolean num1_legal = JudgeUtil.isDoubleOrFloat(num1);
boolean num2_legal = JudgeUtil.isDoubleOrFloat(num2);
if(num1_legal&&num2_legal) {
double num_1 = Double.parseDouble(num1);
double num_2 = Double.parseDouble(num2);
Double num_3 = num_1 + num_2;
txt3.setText(num_3.toString());
}else {
txt3.setText("请输入一个数字!");
}
}
});
//按钮 清空 的事件:
p3_btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent action) {
txt1.setText("");
txt2.setText("");
txt3.setText("");
}
});
}
public static void main(String[] args) {
MyCaluator m = new MyCaluator("A simple caluator");
}
}
class JudgeUtil{
//工具类,判断字符串是否为数字
public static boolean isDoubleOrFloat(String str) {
return str.matches("-?[0-9]+.*[0-9]*");
}
}