1

私は JPanel を持っており、この JPanel にいくつかの非常に単純な画像 (アイテム) を描画したいと考えています。DrawRect や DrawOval などのメソッドを使用したい. このパネルにはスクロールバーがあります。このように見えるはずです。

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

4

2 に答える 2

1

あなたは見てきた

于 2012-04-04T17:14:03.453 に答える
1

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 にキャストしてから使用します。

于 2012-04-04T17:28:04.557 に答える