私は現在、プログラマーとしての個人的な開発のために私のプログラムに取り組んでおり、私が取り組んでいるこのマウスクリックイベントで、フラストレーションの小さなレンガの壁にぶつかりました。頭の中で手順を考え、ホワイト ボードで作業を完了させるために switch ステートメントを使用しているのを見ました。私はこの計画で成功していません。それ以来、他のいくつかの制御構造を試してみましたが、問題は mouseClicked イベント内の制御構造を制御することであるとは思えません。私の目的を伝えるために、関連するサンプルコードをいくつか提供します。提供されたコードが悪いことを知っていることに注意してください。アイデアを伝えようとしているだけです。目標は、ボックスを最初に緑色にしてから、ユーザーがボックスをクリックして赤色に変え、もう一度クリックすると白色になり、最後にもう一度緑に戻ります。何らかの理由で、これは現時点では私を超えています。どんな助けでも大歓迎です。前もって感謝します!
//This component allows the user to store information on current unit identifier. Maybe necessary to pass this in as an arguement to the PssGui since there is no accounting for callsigns.
//This component also needs to be updated with a mouse click event that can turn the color of the box to reflect the tooltip text.
unitId = new JTextField();
unitId.setEditable(false);
unitId.setBackground(Color.GREEN);
unitId.setHorizontalAlignment(SwingConstants.CENTER);
unitId.setToolTipText("<html>SHADE CELLS TO REFLECT CURRENT UNIT STATUS:" + "<br/>GREEN-MC" + "<br/>RED-NMC" + "<br/>WHITE-UNIT IN TRANSISTION</html>");
unitId.setText("A 4/5");
unitId.setBounds(0, 116, 79, 172);
getContentPane().add(unitId);
unitId.setColumns(10);
unitId.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
//Fill with sweet code to change the color of this box accordingly.
//use an Int and a while loop or something so that every click increments the Int
//then each int value corresponds to a color
// have a statement at the end that resets the int back to zero to keep the colors in the loop
//I.E int color = 0, mouse click happens int color = 1, now color =1 which turns the box red,
//color can never be greater than 3, when it is, we set color back to zero.
for(int i = 0; i<=3; i++){
switch (i){
case 1: unitId.setBackground(Color.GREEN);
break;
case 2: unitId.setBackground(Color.red);
break;
case 3: unitId.setBackground(Color.white);
break;
}
}//end while
//System.out.println(i);
}
});
補遺:
私は自分の問題を修正しました。些細なことになることはわかっていましたが、ここに投稿することがサーバー リソースの無駄遣いであった場合は申し訳ありません。昨夜、この問題を解決しようとしていたとき、私は非常にイライラしました。これが機能コードです。ここで覚えておくべき教訓は、休憩を取ることであり、常に解決策を強制しようとしないことです。
unitId = new JTextField();
unitId.setEditable(false);
unitId.setBackground(Color.GREEN);
unitId.setHorizontalAlignment(SwingConstants.CENTER);
unitId.setToolTipText("<html>SHADE CELLS TO REFLECT CURRENT UNIT STATUS:" + "<br/>GREEN-MC" + "<br/>RED-NMC" + "<br/>WHITE-UNIT IN TRANSISTION</html>");
unitId.setText("A 4/5");
unitId.setBounds(0, 116, 79, 172);
getContentPane().add(unitId);
unitId.setColumns(10);
unitId.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
//Fill with sweet code to change the color of this box accordingly.
//use an Int and a while loop or something so that every click increments the Int
//then each int value corresponds to a color
// have a statement at the end that resets the int back to zero to keep the colors in the loop
//I.E int color = 0, mouse click happens int color = 1, now color =1 which turns the box red,
//color can never be greater than 3, when it is, we set color back to zero.
if(starter==0){
unitId.setBackground(Color.GREEN);
starter++;
}
else if(starter==1){
unitId.setBackground(Color.WHITE);
starter++;
}
else if(starter==2){
unitId.setBackground(Color.RED);
starter++;
}
else{
starter=0;
unitId.setBackground(Color.GREEN);
}
//System.out.println(i);
}
});