
Java
1package pack; 2 3import java.awt.EventQueue; 4import java.awt.Font; 5import java.awt.TextComponent; 6import java.awt.event.ActionEvent; 7import java.awt.event.ActionListener; 8import java.awt.event.KeyEvent; 9import java.awt.event.KeyListener; 10 11import javax.swing.JFrame; 12import javax.swing.JLabel; 13import javax.swing.JTextField; 14 15public class TypingSample2 { 16 17 private JFrame frmTypesample; 18 long ptime; //プレスされた時間 19 long rtime;//リリースされた時間 20 long time [][] = new long[1000][1000];// 21 long[][] c = new long [1000][1000];//出現頻度カウント用 22 long avTime[][] = new long [1000][1000];//平均時間 23 int firstkey=0;// 24 int secondkey=0; 25 int count; 26 String userstr; 27 String pristr[]={"トウカイダイガク","メイジダイガク","ヤマモトセンセイ","ケンキュウシツ","ツウシンネットワーク", 28 "ゼミナール","ズートピア","チイバス","クォーター","ミディアム", 29 "ライブビューイング","ゲンダイブンメイロン","ページフォルト","セカイゾウノヘンセン","アイデンティティトキョウセイ", 30 "チイキシャカイ","チェックポイント","ファストフード","フーリエヘンカン","ゼンゼンゼンセ"}; 31 int r = 0; 32 33 public TextComponent textField; 34 /** 35 */ 36 public static void main(String[] args) { 37 EventQueue.invokeLater(new Runnable() { 38 public void run() { 39 try { 40 TypingSample2 window = new TypingSample2(); 41 window.frmTypesample.setVisible(true); 42 } catch (Exception e) { 43 e.printStackTrace(); 44 } 45 } 46 }); 47 } 48 /** 49 * Create the application. 50 */ 51 public TypingSample2() { 52 initialize(); 53 } 54 55 /** 56 * Initialize the contents of the frame. 57 */ 58 59 private void initialize() { 60 frmTypesample = new JFrame(); 61 frmTypesample.setTitle("TypingSample2"); 62 frmTypesample.setBounds(100, 100, 561, 191); 63 frmTypesample.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 64 frmTypesample.getContentPane().setLayout(null); 65 66 JLabel Label = new JLabel("Enterを押すとはじまります"); 67 Label.setFont(new Font("MS UI Gothic", Font.PLAIN,20)); 68 Label.setBounds(34, 30, 331, 43); 69 frmTypesample.getContentPane().add(Label); 70 71 JTextField textField = new JTextField(); 72 textField.setFont(new Font("M113, 24", Font.PLAIN, 20)); 73 textField.setBounds(34, 83, 483, 52); 74 frmTypesample.getContentPane().add(textField); 75 textField.addKeyListener(new Keyboard_input()); 76 77 textField.addActionListener( 78 new ActionListener(){ 79 public void actionPerformed(ActionEvent e){ 80 Label.setText(""); 81 Label.setText(pristr[r]); 82 83 textField.setText(""); 84 count++; 85 if(count == 20){ 86 87 System.out.println("-----------------------------result-----------------------------"); 88 for(int i=65;i<=90;i++){ 89 System.out.println("["+ i + "]:Time=" + avTime[i]); 90 System.out.println("Count=" + c[i]); 91 } 92 System.exit(0); 93 } 94 r++; 95 96 97 /* 処理したい内容をここに記述する */ 98 } 99 } 100 ); 101 } 102 103 class Keyboard_input implements KeyListener 104 { 105 public void keyPressed(KeyEvent event) 106 { 107 108 /* int KeyCode = event.getKeyCode(); 109 110 ptime = System.currentTimeMillis(); 111 if(KeyCode==35){ 112 System.out.println("-----------------------------result-----------------------------"); 113 for(int i=65;i<=90;i++){ 114 System.out.println("[" + i + "]:" + avTime[i]); 115 } 116 System.exit(0); 117 } 118 119 */} 120 public void keyTyped(KeyEvent event) 121 { 122 //何もしない 123 } 124 125 public void keyReleased(KeyEvent event) 126 { 127 128 userstr = textField.getText(); 129 /*System.out.println(userstr); 130 int length=0; 131 length=userstr.length(); 132 System.out.println(length); 133 if(length >= 2){ 134 String firstkeystr = userstr.substring(length-2); 135 String secondkeystr = userstr.substring(length-1); 136 firstkey = Integer.parseInt(firstkeystr); 137 secondkey = Integer.parseInt(secondkeystr); 138 139 System.out.println("firstkey="+firstkey); 140 System.out.println("secondkey="+secondkey); 141 142 } 143 } 144 */} 145 146} 147
TextFieldにキーを入力するとそのキーを離したときに入力したキーとその前に入力されたキーのkeycodeを取得したいのですが、eclipseで記述時には実行はされるのですが、実際にTextFieldに入力すると
userstr = textField.getText();の部分でException in thread "AWT-EventQueue-0" java.lang.NullPointerExceptionエラーを吐かれてしまいます。
原因はなんなのでしょうか?
よろしくお願いします。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。