我试图制作一个简单的应用程序只是为了试验Java图形,但我遇到了这个错误,所以如果有人可以帮助我,我真的很感激.:)
我得到以下内容
Exception in thread "main" java.lang.NullPointerException
at Main.draw(Main.java:41)
at Main.createGUI(Main.java:36)
at Main.main(Main.java:20)
Java Result: 1
Run Code Online (Sandbox Code Playgroud)
我尝试运行以下代码时出错:
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Main extends JFrame {
private static final long serialVersionUID = 1L;
public JPanel panel;
public static void main(String[] args) {
Main m = new Main();
m.setSize(500, 700);
m.setDefaultCloseOperation(EXIT_ON_CLOSE);
m.createGUI();
m.setVisible(true);
}
private void createGUI() {
Container window = getContentPane();
panel = new JPanel();
panel.setPreferredSize(new Dimension(500, 700));
panel.setBackground(Color.WHITE);
window.add(panel);
Graphics paper = panel.getGraphics();
draw(paper);
}
private void draw(Graphics g){
g.drawRect(100, 100, 100, 100);
}
}
Run Code Online (Sandbox Code Playgroud)
有人能告诉我如何解决这个问题以及错误的原因是什么?
谢谢!
Graphics这一行上的对象
g.drawRect(100, 100, 100, 100);
Run Code Online (Sandbox Code Playgroud)
是null因为你已经使用JComponent#getGraphics 之前的 UI是可见的.这就是为什么它始终是最好通过重写做风俗画的paintComponent(图形)的JPanel panel.这将保证Graphics Object在使用之前首先初始化.
| 归档时间: |
|
| 查看次数: |
482 次 |
| 最近记录: |