package cn.itcast.csz.ui;
import java.awt.BorderLayout;
import java.awt.Font;
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.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
/*
* 主界面
*/
public abstract class CSZFrame extends JFrame {
protected JButton btn = new JButton("确定");
protected JTextField[] texts = new JTextField[4];
protected JLabel label = new JLabel();
protected String[] results = new String[8];
public CSZFrame() {
init();
addComponent();
addListener();
}
/*
* 初始化
*/
private void init() {
/*
* 设置宽高
* 设置初始显示位置
* 设置标题
* 设置是否可以修改宽高
*/
this.setSize(300, 250);
this.setLocation(500, 300);
this.setResizable(false);
this.setTitle("猜数字游戏");
}
/*
* 添加组件
*/
public void addComponent() {
/*
* 设置布局
* 添加四个单行文本框
* 添加一个按钮
* 添加一个Label显示结果
*/
// 设置布局
JPanel p1 = new JPanel();//放四个单行文本框和一个按键
JPanel p2 = new JPanel();//放Label
this.add(p1, BorderLayout.NORTH);//放到上面
this.add(p2);//放到中间
// 添加四个单行文本框
for(int i = 0; i < texts.length; i++) {
texts[i] = new JTextField(3);
texts[i].setFont(new Font("宋体", 1, 18));
p1.add(texts[i]);
}
// 添加一个按钮
p1.add(btn);
// 添加JLabel
p2.add(label);
label.setFont(new Font("宋体", 1, 18));
}
/*
* 为组件添加监听器
*/
public void addListener() {
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent tevt) {
try {
String result = getInputAndValidate();
run(result);
} catch(RuntimeException e) {
JOptionPane.showMessageDialog(CSZFrame.this, "输入错误!");
}
}
});
}
/*
* 获取数据并校验
*/
private String getInputAndValidate() throws RuntimeException {
StringBuilder result = new StringBuilder();
for(int i = 0; i < texts.length; i++) {
String input = texts[i].getText();
int inputNum = Integer.parseInt(input);
if(result.toString().contains(inputNum+"")) {
throw new RuntimeException("重复输入: " + inputNum);
}
result.append(inputNum);
}
return result.toString();
}
protected void clearTextField() {
for(int i = 0; i < texts.length; i++) {
texts[i].setText("");
}
}
// 核心业务
public abstract void run(String input);
}
|
|