关于Swing的小尝试

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);
	}

}

猜你喜欢

转载自blog.csdn.net/qq_40731414/article/details/83350595