2016-11-05 8 views
1

私はこのコードをループする必要があることを知っていますが、ループとして何を持っているのか分かりません。分単位ですべてのテキストフィールドをクリアしますが、クリアされた整数だけを持つテキストフィールドが必要です。どんな助けもありがとう。jtextfieldsをループするので、整数以外のものが入力された場合にクリアされます

try { 
    int a = Integer.parseInt(theApp.tred.getText()); 
    int b = Integer.parseInt(theApp.tgreen.getText()); // uses 
                 // information 
                 // entered 
    int c = Integer.parseInt(theApp.tblue.getText()); 

    if (a < 0) { 
     a = 200; // if statements for values above and below the targets 
          // set 
     tred.setText("200"); 
    } 

    if (a > 255) { 
     a = 255; 
     tred.setText("255"); 
    } 
    if (b < 0) { 
     b = 200; 
     tgreen.setText("200"); 
    } 

    if (b > 255) { 
     b = 255; 
     tgreen.setText("255"); 
    } 

    if (c < 0) { 
     c = 200; 
     tblue.setText("200"); 
    } 
    if (c > 255) { 
     c = 255; 
     tblue.setText("255"); 
    } 
    message.setText(" work submitted by:"); // text 
    message.setForeground(new Color(a, b, c)); // changes colour to 
                 // desired input 

} catch (NumberFormatException ex) { 

    message.setText("invalid input! please enter numbers only"); // text 
    message.setForeground(new Color(0, 0, 0)); // original text set to 
               // red 
    tred.setText(""); 
    tgreen.setText(""); 
    tblue.setText(""); // clears box if not an integer 
} 
+0

実際に達成しようとしていることは何ですか? – aleb2000

+0

@ aleb2000もっとコードがありますが、基本的には3つの値(赤と緑)を入力し、入力された値を表す色にメッセージを変更します。私はちょうど255以上の数字のようなランダムな項目や、int以外の何かを扱う余分な仕事をしようとしています – sb33

+0

ここで私はあなたがループを必要としないと思うのではなく、この答えのような 'changeUpdate()'メソッドを実装しているテキストフィールド文書:http://stackoverflow.com/a/3953219/5955649 – aleb2000

答えて

1

あなたは3つの部分にtry-catchブロックを分離することができます:

int a = -1; 
try { 
    a = Integer.parseInt(theApp.tred.getText()); 
    if (a < 0) { 
     a = 200; 
     tred.setText("200"); 
    } 
    if (a > 255) { 
     a = 255; 
     tred.setText("255"); 
    } 
    //do the needed things here 
} catch (Exception e) { 
    message.setText("invalid input! please enter numbers only"); // text 
    message.setForeground(new Color(0, 0, 0)); 
    tred.setText(""); 
} 

(これは単なるtredのために、他の人がほとんど同じですされます)。

+1

ちょうどそれを試みましたが、もしint a b cが独自のtryで定義されていて、それらの外部で呼び出すことができないため、メッセージを目的の入力に変更するmessage.setforegroundはできません。 – sb33

+0

@ sb33変更を実装しましたか? – ItamarG3

+0

これでフィールドがクリアされます!それは良いです、それはちょうど間違ったメッセージを表示しますが、悪い試しと並べ替え、その答えが良い場合は – sb33

関連する問題