A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 施大勇 于 2013-9-21 12:32 编辑

  1. <DIV class=blockcode>
  2. <BLOCKQUOTE>
  3. <BLOCKQUOTE>
复制代码

  1. <P><package day4;

  2. import java.awt.BorderLayout;
  3. import java.awt.Container;
  4. import java.awt.EventQueue;
  5. import java.awt.FlowLayout;
  6. import java.awt.event.KeyAdapter;
  7. import java.awt.event.KeyEvent;
  8. import java.awt.event.KeyListener;

  9. import javax.swing.JFrame;
  10. import javax.swing.JLabel;
  11. import javax.swing.JPanel;
  12. import javax.swing.JTextField;

  13. public class KeyEventDemo extends JFrame {

  14. public static void main(String[] args) {
  15. EventQueue.invokeLater(new Runnable(){//采用事件队列的方式启动线程

  16. @Override
  17. public void run() {
  18. KeyEventDemo frame=new KeyEventDemo();
  19. }
  20. });
  21. }
  22. //抽取窗口中的成员
  23. private JLabel label=new JLabel("请回答下面的数学题计算结果");
  24. private JLabel labelnum_1;
  25. private JLabel labelnum_2;
  26. private JLabel label_1;
  27. private JLabel label_2;
  28. private JTextField resultText;
  29. private JPanel panel;
  30. private JLabel showText;
  31. private int n1=50;
  32. private int n2=30;

  33. //在构造方法中设置窗体的各个组件
  34. public KeyEventDemo(){
  35. super();
  36. setBounds(100,100,500,400);
  37. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  38. Container container=getContentPane();

  39. container.setLayout(new BorderLayout());

  40. panel=new JPanel(new FlowLayout(FlowLayout.CENTER));


  41. labelnum_1=new JLabel();
  42. labelnum_2=new JLabel();
  43. labelnum_1.setText(n1+"");
  44. labelnum_2.setText(n2+"");
  45. label_1=new JLabel("+");
  46. label_2=new JLabel("=");
  47. resultText=new JTextField("0",10);
  48. showText=new JLabel("这里显示提示信息");

  49. panel.add(labelnum_1);
  50. panel.add(label_1);
  51. panel.add(labelnum_2);
  52. panel.add(label_2);
  53. panel.add(resultText);

  54. container.add(label,BorderLayout.NORTH);
  55. container.add(panel,BorderLayout.CENTER);
  56. container.add(showText,BorderLayout.SOUTH);</P>
  57. <P>//添加事件监听
  58. resultText.addKeyListener(new KeyAdapter(){

  59. public void keyPressed(KeyEvent e) {
  60. do_result_keyPressed(e);     //事件处理方法向外抽取
  61. }

  62. });


  63. setVisible(true);
  64. }

  65. protected void do_result_keyPressed(KeyEvent e) {
  66. if (e.getKeyCode()==KeyEvent.VK_ENTER){
  67. String result=resultText.getText();
  68. int resultSum=0;
  69. try {
  70. resultSum = Integer.parseInt(result);
  71. } catch (Exception e2) {
  72. showText.setText("");
  73. showText.setText("结果只能为数字,不能包含字母");
  74. resultText.selectAll();
  75. return ;                           //发生异常处理过后要返回继续向下执行.
  76. }

  77. if (resultSum==n1+n2){
  78. showText.setText("");
  79. showText.setText("回答正确");
  80. randomNumber();
  81. resultText.selectAll();

  82. }else{
  83. showText.setText("");
  84. showText.setText("回答错误,请重新回答。");
  85. resultText.selectAll();
  86. }
  87. }
  88. }

  89. private void randomNumber() {
  90. n1=(int)(Math.random()*100+1);
  91. n2=(int)(Math.random()*100+1);
  92. System.out.println(n1+"::::::::"+n2);
  93. labelnum_1.setText(n1+"");
  94. labelnum_2.setText(n2+"");
  95. }

  96. }
  97. ></P>
复制代码

1 个回复

倒序浏览
亲,如问题已解决请将分类的“未解决”改为“已解决”。
以后的问题贴也要及时更改分类哦~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马