PlayN doesn't have a good API for drawing arbitrary polygons via accelerated GPU commands. It is possible, but you have to use the TriangleBatch API and convert your polygon to triangles yourself.
PlayN is optimized for rendering sprites (aka quads), so its whole rendering pipeline is mainly organized around that. The Surface API provides a thin layer over the Textured/QuadBatch API, which just draws a bunch of textured quads to the screen.
There are two implementations of QuadBatch: UniformQuadBatch, which PlayN tries to use by default, because it can draw textured quads by sending less data to the GPU, or TriangleBatch which just draws two triangles for each quad. But TriangleBatch also allows you to just send your own triangulated mesh.
Writing general purpose code for triangulating polygons is hard to do because you probably don't want to do this every time you render the polygon, so it would not make sense to have a Surface API that took some sort of polygon description and then did the expensive and memory wasteful process of converting that to triangles, only to throw it all away and do it again on the next frame.
We'd probably want some sort of object which was used to define the polygon by adding points, and then which maintained an internal cached triangulation, which could be computed once (and invalidated if the polygon was changed) and then Surface could expose an API to draw those. And we'd have to document that if you want to use that API you have to force PlayN to use the TriangleBatch instead of the QuadBatch (because the batch dictates the shader that's being used to draw the Surface, and the way PlayN is architected, we can't change shaders in the middle of rendering).
So it's a little messy and special casey. But it is pretty useful, so maybe it would be worth the rough edges.