我有以下两段代码
第一个代码:
package guicollection;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class RectanglePattern extends GUIcollection implements ActionListener {
JPanel panelForBackGround;
JButton actionButton;
void drawRectangle() {
RectanglePattern outSideCover = new RectanglePattern();
outSideCover.setSize(500, 500);
outSideCover.createGUI();
outSideCover.setVisible(true);
}
private void createGUI() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container window = getContentPane();
window.setLayout(new FlowLayout());
panelForBackGround = new JPanel();
panelForBackGround.setPreferredSize(new Dimension(400, 300));
panelForBackGround.setBackground(Color.blue);
window.add(panelForBackGround);
actionButton = new JButton("Press me");
window.add(actionButton);
actionButton.addActionListener(this);
}
public void actionPerformed(ActionEvent event) {
Graphics paper = panelForBackGround.getGraphics();
paper.drawLine(0, 0, 9, 10);
paper.drawRect(8, 8, 12, 9);
paper.drawRect(6, 6, 12, 6);
}
}
第二个代码:
package guicollection;
import java.awt.*;
import javax.swing.*;
public class RectanglePattern extends GUIcollection{
JPanel panelForBackGround;
JButton actionButton;
void drawRectangle() {
RectanglePattern outSideCover = new RectanglePattern();
outSideCover.setSize(500, 500);
outSideCover.createGUI();
outSideCover.setVisible(true);
}
private void createGUI() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container window = getContentPane();
window.setLayout(new FlowLayout());
panelForBackGround = new JPanel();
panelForBackGround.setPreferredSize(new Dimension(400, 300));
panelForBackGround.setBackground(Color.blue);
window.add(panelForBackGround);
actionButton = new JButton("Press me");
window.add(actionButton);
actionButton.addActionListener(this);
Graphics paper = panelForBackGround.getGraphics();
paper.drawLine(0, 0, 9, 10);
paper.drawRect(8, 8, 12, 9);
paper.drawRect(6, 6, 12, 6);
}
}
第二个代码在编译时显示以下错误。是不是必须在panelForBackGround
上画一条线和两个矩形?这个错误的原因是什么?
错误:
Exception in thread "main" java.lang.NullPointerException at guicollection.RectanglePattern.drawRectangle(RectanglePattern.java:20) at guicollection.GUIcollection.main(GUIcollection.java:24)
答案 0 :(得分:0)
这里的空指针接受通常与不正确创建图形环境有关。尝试调用此方法:
window.setVisible(true);
OR 可能是因为你试图在窗口上绘制机器还没有时间完全创建。我有这个问题。在创建Graphics变量之前,尝试告诉程序等待窗口赶上:
try{
Thread.sleep(300);
catch(Exception e){
System.out.println(e.printStackTrace());
}
我知道只是"例外"并不是一个特定的例外不是最好的事情,但它是xD lol的简单方法。告诉我,如果这些工作。如果没有,我会在以后再回来帮忙。