java图形化界面的简单应用,完成人品测试小例子。基本图形化界面如下:

12800之后的人品_成员内部类

    【分析】:java图形化界面设计类似于画家绘画。由图中可以看出,本程序需要

准备1个窗体,3个容器(一个作为基础容器,另外两个作为绿黄两部分的基础),3个标签,2个文本框,3个按钮,分别初始化所有控件,并为他们添加相应的实现动作,实现实例。

    【步骤】:

    1:准备容器(基础容器,上容器,下容器),给基础容器添加布局,给上下容器设置背景色;


GridLayout grid = new GridLayout(2, 1);// 创建布局方式:网状布局:N行N列
JPanel pB = new JPanel();// 设置基础容器
pB.setLayout(grid);// 设置基础容器的布局方式
// 设置两个小面板
JPanel pg = new JPanel();//上容器
pg.setColor.GREEN); //上容器背景色的设置
JPanel py = new JPanel();//下容器
py.setColor.YELLOW); //下容器背景色的设置

     2:准备所需的各种控件,并给出相应的初始化;


// 在上容器中添加标签,文本框,按钮
JLabel la1 = new JLabel("请输入姓名:");// 给出提示信息
JTextField text1 = new JTextField(15);// 用于输入
JButton btn1 = new JButton("提交");// 设置按钮的内容
JLabel la4 = new JLabel();// 用于提示信息
// 在下容器上添加标签,文本框,按钮
JLabel la2 = new JLabel("人品值:");
JTextField text2 = new JTextField(15);// 设置文本框长度
JButton btn2 = new JButton("再来一次");
JLabel la3 = new JLabel();
JButton btn3 = new JButton("退出");


    3:在上、下容器中分别添加如图所示的控件;


// 在上小画板中添加相应的控件
pg.add(la1);
pg.add(text1);
pg.add(btn1);
pg.add(la4);
// 在下小画板中添加相应的控件
py.add(la2);
py.add(text2);
py.add(la3);
py.add(btn2);
py.add(btn3);


   4:把上下容器添加到基础容器中,


// 把两个容器添加到基础容器中
pB.add(pg);
pB.add(py);

 

    5:设置窗体的大小,标题,退出方式等;


setTitle("人品测试");// 设置画板的标题
setBounds(200, 200, 600, 600);// 设置窗体大小
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置窗体退出方式

    6:把基础容器添加到窗体上;


// 绑定画板与画布
setContentPane(pB);
// 设置画板的可见性
setVisible(true);

    7:定义按钮单击事件的具体实现成员内部类;


// 定义内部类,实现“提交按钮”的操作
private class Button1Handler implements ActionListener {
public void actionPerformed(ActionEvent e) {
/**
* 判断文本框是否为空
*  为空,则给出提示信息,重新输入
*  不为空,根据随机数值,给出相应评判
*/
if (text1.getText().equals("")) {
la4.setText("姓名不能为空,请重新输入。");
/**
* 给text1文本框添加获得焦点的监听,以使其完成某些操作
*/
text1.addFocusListener(new FocusAdapter() {
public void focusGained(FocusEvent e) {
la4.setText("");// 让文本框获得焦点之后,清空标签
}
});
} else {
Random ran = new Random();
int zhi = ran.nextInt(100);
// 随机输入数值,且转换为int型,为以后的判断
String s = String.valueOf(zhi);
text2.setText(s);
// 根据文本框的值判断人品值的高低
if (Integer.parseInt(text2.getText()) <= 20) {
la3.setText(text1.getText() + ",你可以去死了");
} else if (Integer.parseInt(text2.getText()) <= 60) {
la3.setText(text1.getText() + ",对付活着吧。。");
} else if (Integer.parseInt(text2.getText()) <= 80) {
la3.setText(text1.getText() + ",继续努力,人品会爆发哦");
} else if (Integer.parseInt(text2.getText()) < 100) {
la3.setText(text1.getText() + ",人品爆发哦");
}
}
}
}
// 定义内部类,实现“再来一次”按钮的操作
private class Button2Handler implements ActionListener {
public void actionPerformed(ActionEvent e) {
// 让文本框清空
text1.setText("");
text2.setText("");
la3.setText("");
la4.setText("");
}
}
// 定义内部类,实现“退出”按钮的操作
private class Button3Handler implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.exit(0);//关闭窗体
}
}


    8:为图中的按钮添加相应的监听;


//给按钮添加监听,完成某些操作
btn1.addActionListener(new Button1Handler());
btn2.addActionListener(new Button2Handler());
btn3.addActionListener(new Button3Handler());


    9:在main方法中调用该类的构造方法,使程序运行时直接出现窗体;


//方法运行就展现窗体
public static void main(String[] args) {
new SelfRP();
}


    【注意】

    1:在程序中,按钮操作的实现用的是成员内部,在这里成员内部类和成员方法同等地位,切记:不要把成员内部类写到方法中去

2:这里运用成员内部类实现的操作,同样可以用匿名内部类,“再来一次”按钮的匿名类实现如下,其余的可以此类推:

btn2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 让文本框清空
text1.setText("");
text2.setText("");
la3.setText("");
la4.setText("");
}
});

    初来乍到,请多指教!