目次

操作性の向上

機能の他に大切なこと

プログラムは、その機能の他に予想外の操作に対して適切な例外処理が必要でした。もう一つ大切なのは操作性がよいことです。

CatText2.javaの改良

CatText2.javaで、マウスだけでなく[Enter]キーで操作できるように改良します。もともと[Tab]キーでフォーカスが移動しますからtext1に入力してから[Tab]でtext2に移動することは可能です。また、さらにボタンに移動してスペースキーでボタンを押すことができます。

でも、ActionListnerはテキストフィールドで[Enter]キーを認識しますからこれを使ってもう少し便利にしましょう。text1に入力すると次はtext2に入力するわけですから、text1で[Enter]を押すと「text2に移動」と動作させます。text2に入力したら次は合計ボタンですからtext2で[Enter]を押すと合計をとるようにします。

ファイル名 CatText3.java

プログラム中の4カ所にあるCatText2をCatText3に変えます。

public class CatText3 extends JFrame{ など

text1とtext2をActionListnerに登録します。赤い部分が追加部分です。

button1.addActionListener(this);
text1.addActionListener(this);
text2.addActionListener(this);

actionPerformedに処理を加えます。赤と青の部分が追加部分です。

public void actionPerformed(ActionEvent e) {
	if (e.getSource() == text1) {
		text2.requestFocusInWindow();
	}
	else if (e.getSource() == button1 || e.getSource() == text2) {
		double x = 0 ;
		double y = 0 ;
		……

追加部分の解説

JTextFieldはJButtonと全く同じに使えます。JButtonのイベントがクリックで、JTextFieldのイベントが[Enter]キーの入力になっているだけです。

button1.addActionListener(this);  //JButtonの場合
text1.addActionListener(this);    //JTextFieldの場合
if (e.getSource() == button1) {   //JButtonの場合
if (e.getSource() == text1) {     //JTextFieldの場合

次の文中の || は、「または」の意味です。ボタンをクリックしても、[Enter]キーでも使えるようにしたかったので、このようにしました。

else if (e.getSource() == button1 || e.getSource() == text2) {

青の部分はtext2にフォーカス(focus)が移動するように要請(request)するというものです。

text2.requestFocusInWindow();
もくじ

聖愛高等学校
http://www.seiai.ed.jp/
Last Modified