我知道这已经被讲过很多次了,但是我已经用Java编程了大约3个星期,而且我刚刚在做一些有趣的东西。人们所做的大多数其他报告都没有解决我的问题。屏幕显示但不显示矩形。这是我的代码:
import java.awt.Rectangle;
import javax.swing.JFrame;
import java.awt.Color;
public class something {
public static int SCREEN_WIDTH = 500;
public static int SCREEN_HEIGHT = 500;
public static int Y = 10;
public static int X = 10;
public static int Width = 50;
public static int Height = 50;
public static Color player_color = Color.black;
public static Graphics g;
public static void screen() {
JFrame screen = new JFrame();
screen.setVisible(true);
screen.setSize(SCREEN_WIDTH, SCREEN_HEIGHT);
screen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
screen.setTitle("test");
screen.setResizable(false);
}
public static void player() {
Rectangle r = new Rectangle(Y, X, Width, Height);
g.fillRect((int)r.getX(), (int)r.getY(), (int)r.getWidth(), (int)r.getHeight());
g.setColor(player_color);
}
public static void main(String[] args) {
screen();
player();
}
}
通过我使用Eclipse的方式,我认为该问题意味着我正在使用具有空值的值?如果我错了,请纠正我。
您的g为null,并且未初始化为任何东西,因此在访问fillRect()方法时会得到nullpointer。
您可以只在类级别使用扩展Applet并覆盖paint method()。
public class something extends Applet {
public static int SCREEN_WIDTH = 500;
public static int SCREEN_HEIGHT = 500;
public static int Y = 10;
public static int X = 10;
public static int Width = 50;
public static int Height = 50;
public static Color player_color = Color.black;
@Override
public void paint(Graphics g) {
JFrame screen = new JFrame();
screen.setVisible(true);
screen.setSize(SCREEN_WIDTH, SCREEN_HEIGHT);
screen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
screen.setTitle("test");
screen.setResizable(false);
Rectangle r = new Rectangle(Y, X, Width, Height);
g.fillRect((int) r.getX(), (int) r.getY(), (int) r.getWidth(), (int) r.getHeight());
g.setColor(player_color);
}