在JPanel外部可以看到JPanel中的图形

时间:2013-10-12 13:59:16

标签: java swing jpanel paintcomponent

我有一个矩形,我使用repaint()沿着JPanel移动。当矩形的位置到达JPanel外部的位置时,它不再可见。如何在JPanel外部显示它?

这是我的绘画方法:

public void paintComponent (Graphics g) {
    g.setColor(Color.red);
    g.fillRect(dist, 0, 10, 10);
    dist++;
}

更新

我在JFrame中有多个JPanel,我使用GridBagLayout定位。 JPanels代表街道上的车道和矩形车。在JPanel外部显示矩形的原因是让汽车改变车道。 JPanel似乎适合我,设置汽车的第一个位置。

这个问题有更好的解决方案吗?

2 个答案:

答案 0 :(得分:2)

你说:

  

我有一个矩形,我使用repaint()沿着JPanel移动。当矩形的位置到达JPanel外部的位置时,它不再可见。如何在JPanel外部显示它?

如果JPanel正在绘制它,简短的回答是:“你不能”。

答案越长,取决于您尝试绘制JPanel的位置以及GUI的其余部分的设置方式。


修改
你现在说:

  

我在JFrame中有多个JPanel,我使用GridBagLayout定位。 JPanels代表街道上的车道和矩形车。在JPanel外部显示矩形的原因是让汽车改变车道。 JPanel似乎适合我,设置汽车的第一个位置。

如果我按照你的方式进行编码,我不会让这些本地JPanels绘制汽车,而是将汽车作为自己的精灵存在于街道的不同层上,可能使用JLayeredPane。只要此JPanel不是不透明的,它就可以存在于自己的JPanel中,它包含整个地图。然后你可以按照你喜欢的方式移动汽车。

答案 1 :(得分:2)

如前所述,你不能但是如果你想让它占据更大的面积你应该让JPanel更大或者把paintComponent放在父组件中。