キャンバスにいくつかのポリゴンをペイントしていて、ペイントされたポリゴンの上にいくつかの線を描きたいと思っています。線を描いた後にペイントすると、ペイントされたポリゴンがラインを覆いますが、最初にペイントすると、線が完全に消えます。コードは Scala にありますが、関連するコードはすべて Java ライブラリからのものだと思います。
編集 Rex Kerr のコメントに応じてコードを拡張しました
package rStrat
package rSw
package mapCanv
import swing._
import java.awt.geom._
import java.awt.Polygon
abstract class MapCanv [T <: TypesD](val mArea: GeomBase[T]#MapArea) extends Panel
{
type VHexT <: VisHex
val vHexs: Vec[VisHex] = mArea.mHexs.map(i => newVHexT(i))
def newVHexT(mHex: GeomBase[T]#MapArea#MapHex): VHexT
val line: Line2D.Double = new Line2D.Double(0,0, 350, 350)
override def paintComponent (gr2d: Graphics2D)
{
super.paintComponent (gr2d)
vHexs.foreach(i => i.paint(gr2d))
gr2d.draw(line)
}
abstract class VisHex (val mHex: GeomBase[T]#MapArea#MapHex) extends Polygon with PaintTr
{
mHex.verts.foreach(i => addPoint(i.x.toInt, i.y.toInt))
}
trait PaintTr
{
def paint(gr2d: Graphics2D): Unit
}
}
package rStrat //separate file
package rSw
package mapCanv
import swing._
//import java.awt._
abstract class MapCanvStd[T <: TypesStd](mArea: GeomBase[T]#MapArea) extends MapCanv[T](mArea)
{
type VHexT = VisHexStd
override def newVHexT(mHex: GeomBase[T]#MapArea#MapHex) = new VisHexStd(mHex)
class VisHexStd(mHex: GeomBase[T]#MapArea#MapHex) extends VisHex(mHex)
{
override def paint(gr2d: Graphics2D): Unit =
{
gr2d.setPaint(terrToCol(mHex.hex.terr))
gr2d.fill(this)
}
}
}