簡體   English   中英

我不能畫到 JPanel

[英]I can't draw to a JPanel

我正在嘗試使用 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);
}

它顯示一個空白屏幕......沒有繪制任何內容。

要繪制到 JPanel,請將其布局設置為 null _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);
   }
  }

樣本輸出

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM