【问题标题】:How to draw a rectange on top of JPanel?如何在 JPanel 上绘制一个矩形?
【发布时间】:2014-03-27 23:16:28
【问题描述】:

我想在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);
    }
}

【问题讨论】:

  • 是否计算边距,使矩形居中?
  • @oliholz:我想控制一个矩形的位置。比如,如何把它放在JPanel左上角左10像素处?
  • 也许new LegoBox() 位于您的chartPanel 的中心
  • 我只是做这个 chartPanel.add(new LegoBox());为什么这个命令把我的矩形放在中心?

标签: java graphics java-2d rectangles


【解决方案1】:

也许是来自chartPanelLayoutManager
为了重现您的问题,您必须发布一个工作示例。
尝试使用您的自定义面板填充 chartPanel

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);

【讨论】:

  • 有没有更灵活的方法来定义矩形的位置?例如,基于像素?
  • LegoBox 具有完整宽度后,您可以轻松地将边距设置为像素值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-05
  • 2021-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-15
相关资源
最近更新 更多