java图形化界面的简单应用,完成人品测试小例子。基本图形化界面如下:
【分析】: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(""); } });
初来乍到,请多指教!