2016-03-23 7 views
2

jLabelコンポーネントをクリックすると背景色が変わります。実際に背景色を変更するためのコードを記述しましたが、クリック後に新しい色を保持し、2回目のクリックでデフォルトに戻す必要があります。私はこれについて助けが必要です。jlabelの新しい背景色をクリックした後に保持する方法と、2回目のクリック時にデフォルトに戻す方法はありますか?

private void jLabel1MouseEntered(java.awt.event.MouseEvent evt) { 
    jLabel1.setOpaque(true); 
    jLabel1.setBackground(Color.orange); 
} 
private void jLabel1MouseExited(java.awt.event.MouseEvent evt) { 
    jLabel1.setBackground(Color.white); 
    jLabel1.setOpaque(false); 
} 
private void jLabel1MouseClicked(java.awt.event.MouseEvent evt) { 
    jLabel1.setBackground(Color.green); 
} 

答えて

0

あなたはMouse Clicked or pressed event にコマンドを置く必要がありますし、そうでない場合は、背景がopaqueのデフォルトはJLabelためfalseなので塗装する予定がないJLable setOpaquetrueに設定する必要があります。

private void jLabel1MouseClicked(java.awt.event.MouseEvent evt) {          
     jLabel1.setOpaque(true); 
     jLabel1.setBackground(Color.red); 

    } 
+0

ありがとうございました。私は実際にこれをしました。それは働いていますが、背景色は保持されません。最初のクリック後に背景色が変わり、そのままになるようにする必要があります.2回目のクリックでデフォルトに戻ります。私はこれがActionPerformedイベントで実行できると思っています。 – user6105017

0

すなわち

あなたは、それは逆にし、ボタンアクションリスナーで

boolean isClicked = false; 

そしての状態を保存するboolean型を作り、それが価値だ確認し、ラベルを更新する必要がありますそれが何だったか

if(isClicked) 
{ 
    label.setBackground(Color.BLUE); 
    isClicked = false; 
} 
else 
{ 
    label.setBackground(Color.GRAY); 
    isClicked = true; 
} 
0

方法のそれがクリックされた後、新しいラベルの背景色を保持し、2回目のクリックでデフォルトに戻しますか?

これにはさまざまな方法がありますが、究極のコンセプトは似ています。新しい背景色のレコードを変数に保存するだけで済みます。

この場合、色を保持するために2つの変数を使用しました。oldColornewColorです。

class MainPanel extends JPanel{ //Not necessary must be a JPanel. For e.g. only 

    private Color oldColor; 
    private Color newColor; 
    private JLabel lbl; 
    private JButton btn; 

    //Constructors, initializations, getters, setters not shown 

    public void init(){ 
     lbl.setOpaque(true); 
     btn = new JButton("Click to switch color"); 
     btn.addActionListener(new ButtonHandler()); 
     oldColor = lbl.getBackground(); //can be any color you want 
     newColor = Color.GREEN;   //can be any color you want 
    } 

    private class ButtonHandler implements ActionListener{ 
     @Override 
     public void actionPerformed(ActionEvet e){ 
      if(lbl.getBackground().equals(oldColor)) 
       lbl.setBackground(newColor); 
      else 
       lbl.setBackground(oldColor); 
     } 
    }   
} 

さらに多くの色を使用している場合は、常に配列、ArrayListまたはその他の適切なデータ構造を使用できます。

関連する問題