java - 创建具有多个图像的 JPanel

标签 java image swing jpanel drawrect

我有一个 JPanel,我想在这个 JPanel 上绘制一些非常简单的图像(项目)。我想使用 DrawRect 或 DrawOval 等方法。该面板将有一个滚动条。它应该看起来像 this .

我需要在特定索引上删除和添加项目(图像)。你能帮我一下吗?

最佳答案

从使用 GridLayout 或垂直 BoxLayout 的主 JPanel 开始。将其放入 JScrollPane 中。在主 JPanel 内部,您将需要 JPanel 的实例,它扩展了常规的 PaintComponent() 方法,以使用 drawRect()、drawOval() 等进行绘图。这应该可以帮助您开始:

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。

关于java - 创建具有多个图像的 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10016003/

相关文章:

java - Java中有没有和Rectangle类一样的circle类

java - 在SQL数据库(例如H2)中插入和获取java.time.LocalDate对象

java - 动态添加绑定(bind)到TableView

python - SimpleBlobDetector - 隔离与周围不同的 Blob

java - 在文本字段中键入时如何列出建议

java - 选择 JComboBox 选项不强行更改

java - 用Java中的所有枚举值填充列表

c++ - 将 opencv 图像转换为 gdi 位图不起作用取决于图像大小

java - 在java中将RGB图像转换为灰度HSV

java - 在 View 或 Presenter 中切换到事件调度线程?