2012-04-04 13 views
1

私はJPanelを持っています。このJPanelに非常に単純な画像(アイテム)を描画したいと思います。 DrawRectやDrawOvalのようなメソッドを使いたいです。このパネルにはスクロールバーがあります。それはthisのようになります。複数の画像を持つJPanelを作成する

特定のインデックスでアイテム(画像)を削除して追加する必要があります。私を助けてくれますか?

答えて

1

スタートとJListを見て見てまたは垂直BoxLayoutです。これをJScrollPaneの内部に配置します。メインJPanelの内部では、あなたがのdrawRect()、drawOval(と描画を行うには、通常のpaintComponent()メソッドを拡張するのJPanelのインスタンス)を持っているしたいと思う、などこれは、あなたが始める必要があります。

public JScrollPane buildScrollingContainerPanel() 
{ 
    JPanel containerPanel = new JPanel(new GridLayout(0, 1)); 
    JScrollPane scrollPane = new JScrollPane(containerPanel); 
    containerPanel.add(new MyPanel(true, false)); 
    containerPanel.add(new MyPanel(false, true)); 

    return (scrollPane); 
} 

private class MyPanel extends JPanel 
{ 
    private boolean drawRect; 
    private boolean drawOval; 

    public MyPanel(boolean drawRect, boolean drawOval) 
    { 
     super(); 
     this.drawRect = drawRect; 
     this.drawOval = drawOval; 
    } 

    public void setDrawRect(boolean b) 
    { 
     drawRect = b; 
     repaint(); 
    } 

    public void setDrawOval(boolean b) 
    { 
     drawOval = b; 
     repaint(); 
    } 

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

     if (drawOval) 
     { 
      g.setColor(Color.RED); 
      g.drawOval(16, 16, 16, 16); 
     } 

     if (drawRect) 
     { 
      g.setColor(Color.GREEN); 
      g.drawRect(32, 32, 16, 16); 
     } 
    } 
} 

へcontainerPanelの子にアクセスし、containerPanel.getComponent(int)を使用してMyPanelにキャストします。

+0

ありがとうございました。それは本当に素晴らしい作品です。 – user1313386

1

あなたが持っているいずれかのGridLayoutを使用しています(おそらくGridLayout

+0

ありがとうございます。以前はDrawOvalのようなメソッドでアイコンを使ったことはありません。私はファイルからイメージをロードしただけです。私はファイルからイメージをロードしたくありません。どのように何かを描き、それをアイコンに保存する簡単な例を投稿できますか? – user1313386

関連する問題