gpt4 book ai didi

java - 在 JFrame 中的 JPanel 上绘图

转载 作者:行者123 更新时间:2023-12-01 13:45:21 25 4
gpt4 key购买 nike

我已经很长时间没有用 Java 编写任何绘图程序了,但我无法让这个程序工作。尽管那里应该有一个填充的椭圆形,但窗口仍然是空的。在代码在draw()函数中抛出NullPonterException之前。

public class Map extends JFrame {

private static final long serialVersionUID = 1L;
private JPanel contentPane;
private Graphics graphics;


public static void main(String[] args) {
Map frame = new Map();
}

public Map() {
setTitle("Bugs");
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 600, 600);
contentPane = new JPanel();
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);

JPanel drawingPanel = new JPanel();

contentPane.add(drawingPanel, BorderLayout.CENTER);
this.setVisible(true);
graphics = drawingPanel.getGraphics();

draw(graphics);

}

public void draw(Graphics g){
Bug b = new Bug();
g.setColor(Color.RED);
g.fillOval(b.getPosX(), b.getPosY(), b.getRadius(), b.getRadius());
}

}

最佳答案

仅调用 draw(...) 一次是不够的。这样,在组件重绘后,绘制的内容就会立即丢失。

正确的做法如下:

public class BugPanel extends JPanel {

private Bug bug;

public BugPanel(Bug b) {
bug = b;
}

@Override
public void paint(Graphics g) {
// draw your bug here
}
}

然后将此面板添加到框架的中心区域。

关于java - 在 JFrame 中的 JPanel 上绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20407580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com