Java Swing:绘图不在单独的JPanel中

时间:2015-12-12 14:48:10

标签: java swing jpanel drawing geometry

我是Jari,我在单独的JPanel中绘制圆圈时遇到了一些麻烦: 我的圈子不会位于名为“jPanelOutput”的jpanel中间,这里是我的代码:

Graphics2D graphics = (Graphics2D) jPanelOutput.getGraphics().create();

    Insets insets = jPanelOutput.getInsets();
    System.out.println(insets.toString());
    int w = (int)((jPanelOutput.getWidth())/ 2)-insets.left-insets.right;
    int h = (int)(jPanelOutput.getHeight()/ 2)-insets.top-insets.bottom;
    System.out.println(w + "  " + h);
    graphics.translate(w, h);
    graphics.drawRect(0, 0, 1, 1);
    graphics.drawOval(0, 0, 150, 150);
    graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    graphics.setColor(Color.BLACK);

    graphics.dispose();

但输出是: 不要担心拼写,它用荷兰语(“vlakke spiegel”表示平面镜子,“cirkel”表示圆圈。标题意味着镜像镜像法。

提前谢谢 JARI

1 个答案:

答案 0 :(得分:0)

问题是圆圈是从top_left角落绘制的。圆圈的左上角处于完美的中心位置。您需要做的就是从中心点减去圆的宽度和高度。
以下代码将以圆圈为中心。

int cw = 150;
int ch = 150;
graphics.translate(w - cw / 2, h - ch / 2);
graphics.drawRect(0, 0, 1, 1);
graphics.drawOval(0, 0, cw, ch);