2017-07-07 31 views
0

グラフィックスで複数の画像を描画しています。 JCheckBoxを使用してそれらを表示および消滅させるにはどうすればよいですか?グラフィックスで描画した画像を非表示/表示する

private void drawImages(int index) { 
    Graphics g = mNew.getGraphics(); 
    int x = index % this.width; 
    int y = index/this.width; 
    g.drawImage(imageLabelPixel.get(idImage-1), x, y, 100, 100, null); 
} 
+0

'場合(JCheckBox.isChecked)のdrawImage();' –

+0

早く適切な[MCVE]私たちができることを、コピー&ペーストを投稿し、あなたは私が長いプロジェクトとを持って実際に – Frakcool

答えて

0

をチェックすると、私はそのようにそれを行うだろう、不可視に設定するLabelを使用します。

public class ImgPanel extends JPanel { 

    private int i = 0; 
    private List<BufferedImage> imgs; 

    public ImgPanel(){ 
     //init imgs 
    } 

    public void set(){ 
     i = 0; 
     repaint(); 
    } 

    @Override 
    public void paintComponent (Graphics g){ 
     super.paintComponent(g); 

     if(i >= 0){ 
      Image img = imgs.get(i-1); 
      Image img1 = img.getScaledInstance(100, 100, null); 
     } 

     g.drawImage(img1, 0, 0, null); 
    } 

} 

あなたは、単にグラフィック上に描画してから(私は本当にあなたの与えられたコードがやるべきかを理解していない)compoenntかそこらに渡すことはできません。代わりに、ComponentのpaintComponentメソッドを上書きしてカスタム図面コードをそこに配置する必要があります。

+0

を達成しようとしているものを見るよりよいヘルプについて多機能なので、私はここに投稿しませんでした。私はBufferedImagesのVectorを持っており、この関数drawImagesはベクトルのすべてのイメージを別のイメージ(背景イメージ)に描画します。だから私がやろうとしているのは、JCheckBoxを使ってすべての画像を消してしまうことです。 JCheckBoxが選択されているときに背景画像だけを見たいだけです。 – kazrak

+0

次に、JCheckBoxの状態を保存するArrayListを作成するだけで、リストのすべてのインデックスがレイヤーの1つの有効な状態を表すようにすることができます。 drawImageでは、指定されたインデックスに対して保存されたブール値を証明し、その描画に応じて画像を表示するかどうかを判断しなければなりません。編集:チェックボックスの状態がいつ変化するかを調べるには、ItemListenerまたはActionListenerを追加します。 – Galveston01

+0

ありがとう、これは動作します! – kazrak

1

削除したい画面に何かを描画するグラフィックは使用しません。グラフィックスは描画した他のすべてのグラフィックスとともに画面に表示されますが、コンポーネントを追跡しません。

オプションは、チェックボックスにアクションイベントを追加し、画像を描画しないようにスクラッチから再描画します

JCheckBox cb = new JCheckBox(); 
ImgPanel p = new ImgPanel(); 

cb.addActionListener(new ActionListener(){ 
    @Override 
    public void actionPerformed(ActionEvent evt){ 
     if(cb.isSelected){ 
      p.set(0); 
     } else { 
      p.set(-1); 
     } 
    } 
}); 

:、または単に画像を描画し、ボックスが