アプリ版:「スタンプのみでお礼する」機能のリリースについて

毎度お世話になります。
JTextFiledの割込み処理の簡素化について、お聞きいたします。

JTextFieldの割込み処理は、各JTextField毎に記載の予定ですが、ここではdataUp0の割込み
を記載しています。(下記コードをご参照ください)
各JTextField(例えば、dataUp0等で合計約40個あり)、ますので40個の割込み処理
ルーチンの記載が必要とおもいます。

Q1)この割込み処理ルーチンの共通部分を、サブルーチン化等をおこない、コード数を
   減少させる方法に関するコメント頂けますと、大変あり難いです。

//JTextField定義部分(new部分は別途記載)==============
// コンポーネントを作成
static JTextField dataUp0;
static JTextField dataUp1;
static JTextField dataUp2;
static JTextField dataUp3;
static JTextField dataUp4;
static JTextField dataUp5;
static JTextField dataUp6;
static JTextField dataUp7;
static JTextField dataUp8;
static JTextField dataUp9;
static JTextField dataUp10;
static JTextField dataUp11;
static JTextField dataUp12;
static JTextField dataUp13;
static JTextField dataUp14;
static JTextField dataUp15;
static JTextField dataUp16;
static JTextField dataUp17;
static JTextField dataUp18;
static JTextField dataUp19;
static JTextField dataUp20;
     //21個のみ記載し以下省略です

//割込み処理ルーチン(dataUp1に対応)=========================
// テキストフィールドにイベントリスナを登録
    //処理内容:dataUp1のフィールドをダブルクリックしますと、各ダブルクリックごとに
    //背景色が白から緑、緑から白と変化します。
dataUp1.addMouseListener (
new java.awt.event.MouseAdapter () {
public void mouseClicked (java.awt.event.MouseEvent evt) {
if(evt.getClickCount () == 1) {
//System.out.println("Click");
}
else if(evt.getClickCount () == 2) {
mouseDoubleClicked (evt);
//System.out.println("Double Click");
}
}
void mouseDoubleClicked (java.awt.event.MouseEvent evt) {
switch(HColor[1]){
case 0:
HColor[1]=1;
dataUp1.setBackground(java.awt.Color.GREEN); //staticでok
break;
case 1:
HColor[1]=0;
dataUp1.setBackground(java.awt.Color.WHITE); //staticでok
break;
default: break;
}
dataUp1.setText(dataUp1.getText() );
}
}
//=================================
以上、宜しくお願いします。

A 回答 (1件)

//JTextField定義部分(new部分は別途記載)==============


// コンポーネントを作成
/*
static JTextField dataUp0;
static JTextField dataUp1;
static JTextField dataUp2;
static JTextField dataUp3;
static JTextField dataUp4;
static JTextField dataUp5;
static JTextField dataUp6;
static JTextField dataUp7;
static JTextField dataUp8;
static JTextField dataUp9;
static JTextField dataUp10;
static JTextField dataUp11;
static JTextField dataUp12;
static JTextField dataUp13;
static JTextField dataUp14;
static JTextField dataUp15;
static JTextField dataUp16;
static JTextField dataUp17;
static JTextField dataUp18;
static JTextField dataUp19;
static JTextField dataUp20;
     //21個のみ記載し以下省略です
*/
// なんでインデックス付きの名前の変数を作るかなぁ *sigh*
static JTextField[] dataUp = new JTextField[40];

//割込み処理ルーチン(dataUp1に対応)=========================
// テキストフィールドにイベントリスナを登録
    //処理内容:dataUp1のフィールドをダブルクリックしますと、各ダブルクリックごとに
    //背景色が白から緑、緑から白と変化します。
/*
dataUp1.addMouseListener (
new java.awt.event.MouseAdapter () {
public void mouseClicked (java.awt.event.MouseEvent evt) {
if(evt.getClickCount () == 1) {
//System.out.println("Click");
}
else if(evt.getClickCount () == 2) {
mouseDoubleClicked (evt);
//System.out.println("Double Click");
}
}
void mouseDoubleClicked (java.awt.event.MouseEvent evt) {
switch(HColor[1]){
case 0:
HColor[1]=1;
dataUp1.setBackground(java.awt.Color.GREEN); //staticでok
break;
case 1:
HColor[1]=0;
dataUp1.setBackground(java.awt.Color.WHITE); //staticでok
break;
default: break;
}
dataUp1.setText(dataUp1.getText() );
}
}
*/
// 一つにまとめられることは一つにしましょう
class DataUpMouseListener extends java.awt.event.MouseAdapter {
private int fieldIndex;
public DataUpMouseListener(int fieldIndex) {
this.fieldIndex = fieldIndex;
}
public void mouseClicked (java.awt.event.MouseEvent evt) {
if(evt.getClickCount () == 1) {
//System.out.println("Click");
}
else if(evt.getClickCount () == 2) {
mouseDoubleClicked (evt);
//System.out.println("Double Click");
}
}
void mouseDoubleClicked (java.awt.event.MouseEvent evt) {
switch(HColor[fieldIndex]){
case 0:
HColor[fieldIndex]=1;
dataUp[fieldIndex].setBackground(java.awt.Color.GREEN);
break;
case 1:
HColor[fieldIndex]=0;
dataUp[fieldIndex].setBackground(java.awt.Color.WHITE);
break;
default: break;
}
dataUp[fieldIndex].setText(dataUp[fieldIndex].getText() );
}
}
// ...
for (int i = 0; i < dataUp.length; i++) {
dateUp[i].addMouseListener(new DataUpMouseListener(i));
}

//=================================
    • good
    • 0
この回答へのお礼

貴方のコメント(改良コード)を参考にして、コード改良します。
コメント有難うございました。

お礼日時:2014/12/14 19:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!