我有一个矩形,我使用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似乎适合我,设置汽车的第一个位置。
这个问题有更好的解决方案吗?
答案 0 :(得分:2)
你说:
我有一个矩形,我使用repaint()沿着JPanel移动。当矩形的位置到达JPanel外部的位置时,它不再可见。如何在JPanel外部显示它?
如果JPanel正在绘制它,简短的回答是:“你不能”。
答案越长,取决于您尝试绘制JPanel的位置以及GUI的其余部分的设置方式。
修改强>
你现在说:
我在JFrame中有多个JPanel,我使用GridBagLayout定位。 JPanels代表街道上的车道和矩形车。在JPanel外部显示矩形的原因是让汽车改变车道。 JPanel似乎适合我,设置汽车的第一个位置。
如果我按照你的方式进行编码,我不会让这些本地JPanels绘制汽车,而是将汽车作为自己的精灵存在于街道的不同层上,可能使用JLayeredPane。只要此JPanel不是不透明的,它就可以存在于自己的JPanel中,它包含整个地图。然后你可以按照你喜欢的方式移动汽车。
答案 1 :(得分:2)
如前所述,你不能但是如果你想让它占据更大的面积你应该让JPanel更大或者把paintComponent放在父组件中。