毎度お世話になります。
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() );
}
}
//=================================
以上、宜しくお願いします。
No.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));
}
//=================================
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- C言語・C++・C# int tff(int clk) { static int state = 0; //状態 stat 1 2022/07/11 21:14
- Java java final 1 2022/06/10 22:49
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- Java eclipse実行ができない 2 2022/07/27 04:47
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JAの支部?地域の農協のカード...
-
プログラミングの問題です。大...
-
配列にnullを代入すると、null...
-
マイクラでPythonのプログラミ...
-
JSFタグのfタグとは
-
list の空は [] ってあわらすのに
-
下記問題の答えが"D"になる意味...
-
改行含むテキストの表示の仕方
-
Eclipse 動的プロジェクトで404...
-
キー入力について
-
jdk17.06のインストーラーが起...
-
EclipseとVisual StudioをPC1台...
-
プログラミング教えてください。
-
正規表現について質問です。 カ...
-
CSV出力を画面から選択したデー...
-
あんまりお料理しないのに台所...
-
質問です。 配列が100以上の場...
-
次のhtml・cssでspan内の文字を...
-
Jupyter notebookですわかりま...
-
JaneStyleのスレッドが見れなく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミングの問題です。大...
-
マイクラでPythonのプログラミ...
-
配列にnullを代入すると、null...
-
jdk17.06のインストーラーが起...
-
Eclipse 動的プロジェクトで404...
-
list の空は [] ってあわらすのに
-
下記問題の答えが"D"になる意味...
-
JaneStyleのスレッドが見れなく...
-
正規表現について質問です。 カ...
-
eclipseで作ったプログラムを他...
-
改行含むテキストの表示の仕方
-
リレーションエンティティクラ...
-
質問です。 配列が100以上の場...
-
次のhtml・cssでspan内の文字を...
-
キー入力について
-
自作Androidアプリのデータ引き...
-
問題作成のWebアプリの作り方を...
-
eclipse実行ができない
-
変数名とDBカラム名の関係性に...
-
デバッグツールの具体例を教え...
おすすめ情報