Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建具有多个图像的JPanel_Java_Image_Swing_Jpanel_Drawrect - Fatal编程技术网

Java 创建具有多个图像的JPanel

Java 创建具有多个图像的JPanel,java,image,swing,jpanel,drawrect,Java,Image,Swing,Jpanel,Drawrect,我有一个JPanel,我想画一些非常简单的图片(项目)。我想使用DrawRect或DrawOval之类的方法。。此面板将有一个滚动条。应该是这样的 我需要删除和添加特定索引上的项目(图像)。你能帮帮我吗?你已经看过了 正确(可能是GridLayout) 你必须和我一起看 从使用网格布局或垂直框布局的主JPanel开始。把它放在JScrollPane中。在主JPanel中,您需要有JPanel的实例,它扩展了常规的paintComponent()方法,以使用drawRect()、drawOval

我有一个JPanel,我想画一些非常简单的图片(项目)。我想使用DrawRect或DrawOval之类的方法。。此面板将有一个滚动条。应该是这样的

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

你已经看过了

  • 正确(可能是
    GridLayout

  • 你必须和我一起看


从使用网格布局或垂直框布局的主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。

谢谢您的回答。我以前从未使用过像DrawOval这样的图标方法。我只加载了一个文件中的图像。我不想从文件中加载图像。你能举一些简单的例子来说明如何画一些东西并将其保存到一个图标中吗?