这个代码没有画出它应该画的模具。有什么提示吗?(Java,请参见两个类)
该代码应该根据从用户收集的输入、模具表面上的多少点以及模具位置来创建模具 这是主课 导入javax.swing.JFrame这个代码没有画出它应该画的模具。有什么提示吗?(Java,请参见两个类),java,eclipse,Java,Eclipse,该代码应该根据从用户收集的输入、模具表面上的多少点以及模具位置来创建模具 这是主课 导入javax.swing.JFrame import java.awt.Color; import java.util.Scanner; public class RollTheDie { public static void main(String[] args) { final int WINDOW_HEIGHT = 350; final int WINDO
import java.awt.Color;
import java.util.Scanner;
public class RollTheDie
{
public static void main(String[] args)
{
final int WINDOW_HEIGHT = 350;
final int WINDOW_WIDTH = 300;
System.out.println("Hi! Let's play dice!\n");
Scanner kb = new Scanner( System.in );
System.out.print("Enter the number on the face of the die:");
int num = kb.nextInt();
System.out.print("Enter the location of the die:");
int x = kb.nextInt();
int y = kb.nextInt();
System.out.println("I hope you had fun! Bye!");
JFrame dieWindow = new JFrame();
dieWindow.setBackground(Color.gray);
dieWindow.setSize(WINDOW_HEIGHT, WINDOW_WIDTH);
dieWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
dieWindow.setTitle("Roll the Die");
Die newDie = new Die(num,x,y);
dieWindow.add(newDie);
dieWindow.setVisible(true);
}
}
这是模具类 导入java.awt.Color; 导入java.awt.Graphics; 导入javax.swing.JPanel
public class Die extends JPanel
{
/**
*
*/
private static final long serialVersionUID = 1L;
int xCoordinate;
int yCoordinate;
int num;
Graphics pen, pane;
private static final int DIE_LENGTH = 60; //Set's the size
private static final int DIE_WIDTH = 60; //of the die
private static final int DIE_HEIGHT = 60;
private static final int DOT_LENGTH = 10;
private static final int DOT_WIDTH = 10;
private static final Color LINE_COLOR = Color.black;
private static final Color DIE_COLOR = Color.white;
private static final Color DOT_COLOR = Color.black;
private static final int DIE_VERT = 10;
private static final int DIE_HORI = 10;
public Die(int dieNum, int x, int y)
{
xCoordinate = x;
yCoordinate = y;
num = dieNum;
}
public void paintDie(Graphics pen)
{
//Creates the square
pen.drawRect(getX(), getY(), DIE_WIDTH, DIE_HEIGHT);
pen.setColor(LINE_COLOR);
pen.fillRect(xCoordinate, yCoordinate, DIE_LENGTH, DIE_WIDTH);
if (num <= 0)
drawBlank();
else if (num == 1)
drawOne();
else if (num == 2)
drawTwo();
else if (num == 3)
drawThree();
else if (num == 4)
drawFour();
else if (num == 5)
drawFive();
else if (num == 6)
drawSix();
}
private void drawBlank ()
{
pane.setColor(DIE_COLOR);
pane.fillRect(xCoordinate, yCoordinate, DIE_LENGTH, DIE_WIDTH);
}
private void drawDot (int x, int y)
{
pane.setColor(DOT_COLOR);
pane.fillOval(x, y, DOT_LENGTH, DOT_WIDTH);
}
private void drawOne ()
{
drawBlank();
drawDot(xCoordinate, yCoordinate);
}
private void drawTwo ()
{
drawBlank();
pane.fillOval((xCoordinate - DIE_HORI), (yCoordinate + DIE_VERT), DOT_LENGTH, DOT_WIDTH);
pane.fillOval((xCoordinate + DIE_HORI), (yCoordinate - DIE_VERT), DOT_LENGTH, DOT_WIDTH);
}
private void drawThree ()
{
drawBlank();
drawOne();
drawTwo();
}
private void drawFour ()
{
drawBlank();
drawDot((xCoordinate - DIE_HORI),(yCoordinate + DIE_VERT));
drawDot((xCoordinate + DIE_HORI),(yCoordinate + DIE_VERT));
drawDot((xCoordinate - DIE_HORI),(yCoordinate - DIE_VERT));
drawDot((xCoordinate + DIE_HORI),(yCoordinate - DIE_VERT));
}
private void drawFive ()
{
drawBlank();
drawFour();
drawOne();
}
private void drawSix()
{
drawBlank();
drawFour();
drawDot((xCoordinate - DIE_HORI), yCoordinate);
drawDot((xCoordinate + DIE_HORI) , yCoordinate);
}
}
公共类扩展JPanel
{
/**
*
*/
私有静态最终长serialVersionUID=1L;
国际协调;
国际协调;
int-num;
图形笔、窗格;
private static final int DIE_LENGTH=60;//设置大小
专用静态最终int DIE_WIDTH=60;//模具的
专用静态最终内模高度=60;
专用静态最终整数点长度=10;
专用静态最终整型点_宽度=10;
专用静态最终颜色线\u Color=Color.black;
私有静态最终颜色DIE_Color=Color.white;
私有静态最终颜色点_颜色=Color.black;
私有静态最终整数=10;
私有静态最终整数=10;
公共骰子(整数、整数x、整数y)
{
xCoordinate=x;
y坐标=y;
num=dieNum;
}
公共空白画片(图形笔)
{
//创建正方形
drawRect(getX(),getY(),模具宽度,模具高度);
pen.setColor(线条颜色);
pen.fillRect(X坐标、Y坐标、模具长度、模具宽度);
如果(num您的类有一个paintDie(Graphics g)
方法,该方法包含用于绘制东西的代码,但从未调用过,因此什么也看不到是有意义的。此外,您的JPanel类没有paintComponent(Graphics g)
method override,在这里应该绘制。没有这个,什么都不会绘制
尝试将paintDie更改为paintComponent:
@Override
protected void paintComponent(Graphics pen) {
super. paintComponent(pen);
// ... etc
}
别忘了添加@Override
注释,这样您就知道您实际上正在重写父方法。您已经告诉我们您的目标,发布了代码,但您根本没有真正解释问题。会发生什么?代码中没有出现一些导入语句,但我向您保证,我已经将它们全部包含在内ats不是我认为的问题。你应该描述你的问题。我得到一个空窗口,里面什么都没有。这样做会导致以下错误:线程“AWT-EventQueue-0”中出现异常java.lang。NullPointerException@user3457911:然后找到引发异常的行并修复它。找出该行中哪个变量为null,查看代码并确保它已初始化。