我有一个 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/