package cn.breeziness.matlab;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.regex.Pattern;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class SwingUi extends JFrame {
public TextViewCallBack tvCallBack; // 声明文本框回调接口类型
private JTextField jt1 = null; // 声明文本框类型
private JTextField jt2 = null;
// 构造方法
public SwingUi() {
}
/**
* 初始化窗体方法,使用Swing工具包 这里对文本框和按键监听 按键点击后,在按键处理接口方法中,将文本框数据通过文本回调接口回调给调用者
* 文本输入信息采样正则匹配正整数
*
*/
public void drawWindows() {
//窗体设置
setTitle("计算点电荷电场分布");
setLayout(null);
setBounds(0, 0, 500, 350);
Container container = getContentPane();//窗体对象
//文本便签设置
JLabel jl1 = new JLabel("电荷1电量:");
JLabel jl2 = new JLabel("电荷2电量:");
JLabel jl3 = new JLabel("breeziness");
jl1.setFont(new Font("宋体", Font.BOLD, 18));
jl2.setFont(new Font("宋体", Font.BOLD, 18));
jl3.setFont(new Font("微软雅黑", Font.BOLD + Font.ITALIC, 14));
jl1.setBounds(60, 70, 200, 20);
jl2.setBounds(60, 140, 200, 20);
jl3.setBounds(320, 280, 200, 20);
//文本框控件设置
jt1 = new JTextField();
jt2 = new JTextField();
jt1.setBounds(160, 65, 200, 35); // x,y,width.heigth
jt2.setBounds(160, 135, 200, 35); // x,y,width.heigth
//按键设置
JButton jb = new JButton("绘制电场分布");
jb.setBounds(190, 210, 120, 25);
//按键监听事件
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取文本框内容,为字符串格式
String x = jt1.getText();
String y = jt2.getText();
if ((isNumber(x) && isNumber(y)) == false) {
// 提出对话框提示格式错误
JOptionPane.showMessageDialog(null, "格式错误,请输入正整数");
// 错误的项自动清空
if (isNumber(x) == false) {
jt1.setText("");
jt1.requestFocus();
}
if (isNumber(y) == false) {
jt2.setText("");
jt2.requestFocus();
}
} else {
// 弹出对话框,提示
JOptionPane.showMessageDialog(null, "绘图需要等待几秒");
// 将文本框数据装入接口中,提供回调
tvCallBack.getTextView(x, y);
}
}
});
// 装载控件到窗体中
container.add(jl1);
container.add(jl2);
container.add(jl3);
container.add(jt1);
container.add(jt2);
container.add(jb);
container.setBackground(Color.PINK);// 设置窗体背景颜色
setVisible(true);// 设置窗体可视化
}
/**
* 正则匹配用户输入的数据
*
* @param str
* @return
*/
public static boolean isNumber(String str) {
// 采用正则表达式的方式来判断一个字符串是否为数字
boolean isInt = Pattern.compile("^[0-9]*[1-9][0-9]*$").matcher(str).find();
// 结果不是正整数就返回false
return isInt;
}
/**
* 文本框内容回调接口
*
* @author breeziness
*
*/
public interface TextViewCallBack {
public abstract void getTextView(String x, String y);
}
}
关于Swing的小尝试
猜你喜欢
转载自blog.csdn.net/qq_40731414/article/details/83350595
今日推荐
周排行