[英]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.