Java 如何在JPanel上绘制矩形?

Java 如何在JPanel上绘制矩形?,java,graphics,java-2d,rectangles,Java,Graphics,Java 2d,Rectangles,我想在JPanel上画一个矩形。接下来,我想为这个矩形设置正确的位置。我就是这样做的。 我试图更改g.fillRect(margin,margin,30,30)中的数字,但我的矩形始终位于JPanel的中心。为什么? JPanel chartPanel = new JPanel(); // here we add components to chartPanel // ... chartPanel.add(new LegoBox()); class LegoBox extends JPan

我想在
JPanel
上画一个矩形。接下来,我想为这个矩形设置正确的位置。我就是这样做的。 我试图更改
g.fillRect(margin,margin,30,30)
中的数字,但我的矩形始终位于
JPanel
的中心。为什么?

JPanel chartPanel = new JPanel();

// here we add components to chartPanel
// ...

chartPanel.add(new LegoBox());

class LegoBox extends JPanel {

    public void paintComponent(Graphics g) {
            super.paintComponent(g);
            int margin = 0;          
            g.setColor(Color.red);
            g.fillRect(margin, margin, 30, 30);
    }
}

可能是
chartPanel
中的
LayoutManager

为了重现您的问题,您必须发布一个工作示例。
尝试用自定义面板填充
图表面板

chartPanel.setLayoutManager(new BorderLayout());
chartPanel.add(new LegoBox(), BorderLayout.CENTER); 

油漆组件:

super.paintComponent(g);
g.setColor(Color.red);
int rectWidth = 30;
int rectHeight = 30; 
int marginLeft = 12; // a pixel value
int marginTop = 17;      
g.fillRect(marginLeft, marginTop, rectWidth, rectHeight);

你想计算边距,使矩形居中吗?@oliholz:我想控制矩形的位置。例如,如何将其放置在JPanel左上角的左侧10个像素处?也许
new LegoBox()
位于您的
chartPanel
I刚做了这个chartPanel.add(new LegoBox());为什么这个命令把我的矩形放在中间?有没有更灵活的方法来定义矩形的位置?例如,基于像素?在
LegoBox
具有全宽后,您可以轻松地将边距设置为像素值。