- ベストアンサー
JTextFieldの割込み処理の簡素化について
- JTextFieldの割込み処理をサブルーチン化し、コード数を減少させる方法について教えてください。
- JTextFieldの割込み処理の共通部分をサブルーチン化することで、コードの冗長さを解消し、効率的なプログラムを実現します。
- 具体的には、各JTextFieldについての割込み処理を一つのサブルーチンで行い、各JTextFieldごとに適切な処理を実行するようにします。
- みんなの回答 (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)); } //=================================
お礼
貴方のコメント(改良コード)を参考にして、コード改良します。 コメント有難うございました。