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
具有全宽后,您可以轻松地将边距设置为像素值。