1

我有一个矩形,我使用repaint(). 当矩形的位置到达 JPanel 之外的位置时,它不再可见。如何使它在 JPanel 之外可见?

这是我的绘画方法:

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

更新:

我在使用 GridBagLayout 定位的 JFrame 中有多个 JPanel。JPanel 代表街道中的车道和矩形汽车。使矩形在其 JPanel 外部可见的原因是让汽车改变车道。JPanel 对我来说似乎适合设置汽车的第一个位置。

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

4

2 回答 2

2

你说:

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

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

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


编辑
您现在声明:

我在使用 GridBagLayout 定位的 JFrame 中有多个 JPanel。JPanel 代表街道中的车道和矩形汽车。使矩形在其 JPanel 外部可见的原因是让汽车改变车道。JPanel 对我来说似乎适合设置汽车的第一个位置。

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

于 2013-10-12T14:03:29.440 回答
2

如前所述,您不能,但如果您希望它占据更大的区域,您应该使 JPanel 更大或将paintComponent 放在父组件中。

于 2013-10-12T14:15:50.327 回答