私は JPanel を持っており、この JPanel にいくつかの非常に単純な画像 (アイテム) を描画したいと考えています。DrawRect や DrawOval などのメソッドを使用したい. このパネルにはスクロールバーがあります。このように見えるはずです。
特定のインデックスのアイテム (画像) を削除して追加する必要があります。助けてください。
あなたは見てきた
適切なLayoutManager (おそらくGridLayout
)
あなたはJList with Iconsを見ました
GridLayout または垂直 BoxLayout を使用するメインの JPanel から始めます。これを JScrollPane 内に配置します。メインの JPanel 内に、通常の paintComponent() メソッドを拡張して drawRect() や drawOval() などで描画を行う 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 にキャストしてから使用します。