我无法绘制到JPanel

时间:2019-04-02 13:25:36

标签: java

我正在尝试使用JPanel绘制到窗口,但是什么都没有显示。

我尝试过在线查找,但找不到任何内容。

    private void initialize()
{
    _frame = new JFrame(_name);
    _panel = new JPanel();


    _frame.setSize(_scaledSize);
    _frame.setLocationRelativeTo(null);

    _frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    _frame.setResizable(true);

    _panel.setPreferredSize(_scaledSize);
    _panel.setMinimumSize(_scaledSize);
    _panel.setMaximumSize(_scaledSize);

    _frame.getContentPane().add(_panel);


    _frame.pack();


    _frame.setVisible(true);
}

public JPanel getPanel()
{
    return _panel;
}

负责绘制的方法

  public void draw()
{
    Graphics graphics;
    graphics = _display.getPanel().getGraphics();
    graphics.setColor(Color.black);
    graphics.drawRect(20, 20, 100, 100);
}

显示空白屏幕...什么也没画。

1 个答案:

答案 0 :(得分:0)

要绘制到JPanel,请将其布局设置为空_panel.setLayout(null);(如果要添加多个形状)。将其布局设置为_panel.setLayout(new CardLayout(如果要仅添加1个形状)。

因此,您的主要方法将变为 * NB Shape是我们要绘制的面板

    Shape shape = new Shape();
    shape.setSize(new Dimension(150, 150));
    shape.setPreferredSize(new Dimension(150, 150));
   _panel.add(shape).setLocation(0, 0);

形状代码将变为

class Shape extends JPanel {
public GeneralPath getShape() {
    GeneralPath path = new GeneralPath();
    path.moveTo(20, 20);
    path.lineTo(20, 40);
    path.lineTo(40,40);
    path.lineTo(40,20);
    path.closePath();
    return path;
}
@Override
public void paintComponent(Graphics g) {
    Graphics2D g2d = (Graphics2D) g;
    GeneralPath pt = getShape();
    g2d.scale(2, 2);
    g2d.draw(pt);
   }
  }

Sample output