2013-10-12 90 views
1

我有一个矩形,我沿着JPanel使用repaint()移动。当矩形的位置到达JPanel外部的位置时,它不再可见。我怎样才能让它在JPanel之外可见?使JPanel中的图形可见外部JPanel

这是我的paint方法:

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

更新:

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

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

+1

无关:**请勿在绘画时更改组件的状态... – kleopatra

回答

2

幽州:

我有我使用重绘沿JPanel中移动()的矩形。当矩形的位置到达JPanel外部的位置时,它不再可见。我怎样才能让它在JPanel之外可见?

如果JPanel正在绘制它,简短答案是:“你不行”。

较长的答案将取决于您试图绘制JPanel的位置以及GUI的其余部分如何设置。


编辑
您现在的状态:

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

如果我编写你在做它的方式,我不会有这些地方JPanels画汽车,而是将有车是自己的精灵,从街头不同的层上存在,也许使用JLayeredPane的。它可以存在于它自己的包含整个地图的JPanel中,只要这个JPanel不是不透明的。然后,您可以按照您喜欢的方式移动汽车。

+0

我添加了有关gui的其他部分的详细信息 – flec

+0

@flec:请参阅编辑。 –

2

如前所述,你不能但如果你想占用更大的面积,你应该使JPanel变大或将paintComponent放在父组件中。