不久前我在这里发了一个问题。我对它有不同的问题。我已经改变了我的代码,就图形处理而言,但它仍然不能正常工作。
它绘制的底部框架非常好(一个与按钮等)然而。在此之上,刽子手游戏本身应该是平局。才不是。它根本没有画任何东西。我不知道该怎么办。我要疯了,因为这是我今晚到期的最后一个项目!谁能帮帮我吗?
下面是我的代码:(我尽可能地省略了更多的代码,但是如果您需要整个程序来测试自己,请在这里找到它。)
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;
public class Hangman extends JFrame {
private Hangman.Hangman_Panel canvas = new Hangman.Hangman_Panel();
// How many times you can guess the wrong letter till you lose
static final int DEAD = 7;
private int errors; // amount of errors
private String message; // Message displaying either Error or Victory
private String information; // Secondary Message
private String RealWord; // The Real word
private StringBuffer GuessWord;// The Guessed word
private Button StartBtn; // The Restart Button
private Button GoBtn; // The Go Button
private TextField LetterBox; // The LetterBox
//Contructor
public Hangman() {
this.add(canvas, BorderLayout.CENTER); // Add canvas to center
// Create a "Textbox" for the letter guessing
LetterBox = new TextField();
JPanel p = new JPanel();
p.setLayout(new FlowLayout());
p.add(StartBtn = new Button("Restart"));
p.add(new Label("Guess a letter"));
p.add(LetterBox);
p.add(GoBtn = new Button("Go"));
add(p, BorderLayout.SOUTH);
}
public static void main(String[] args) {
JFrame frame = new Hangman();
frame.setSize(300, 400);
frame.setLocationRelativeTo(null); // Center the frame
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
class Hangman_Panel extends JPanel implements ActionListener {
@Override
public void paint(Graphics g) {
super.paintComponent(g);
int BaseY = 250;
//THE HANGING STAND
if (errors > 0) { //1 Error
g.drawLine(90, BaseY, 200, BaseY); //The ground
g.drawLine(125, BaseY, 125, BaseY-100); //The bar going up
g.drawLine(125, BaseY-100, 175, BaseY-100); //The sidebar
g.drawLine(175, BaseY-100, 175, BaseY-75); //The Rope
}
//THE PERSON
if (errors > 1) {
g.drawOval(170, BaseY-75, 10, 12); // The Head
}
if (errors > 2) {
g.drawLine(175, BaseY-62, 175, BaseY-45); // The Body
}
if (errors > 3) {
g.drawLine(165, BaseY-65, 175, BaseY-55); // Left Arm
}
if (errors > 4) {
g.drawLine(185, BaseY-65, 175, BaseY-55); // Right Arm
}
if (errors > 5) {
g.drawLine(170, BaseY-30, 175, BaseY-45); //Left Leg
}
if (errors > 6) { //7 Errors
g.drawLine(175, BaseY-45, 180, BaseY-30); // Right Left
}
//Show Messages/Errors
g.drawString(message, 40, BaseY+25);
g.drawString(information, 25, BaseY+45);
g.drawString(new String (GuessWord), 140, BaseY-120);
g.drawString(new String("WELCOME TO HANGMAN!"), 75, 40);
}
public void init() {
//Make buttons event listeners
StartBtn.addActionListener(this);
GoBtn.addActionListener(this);
//Startup the Game
initGame();
}
}
private Hangman.Hangman_Panel canvas = new Hangman.Hangman_Panel();
//Constructor
public Hangman() {
this.add(canvas, BorderLayout.CENTER); // Add canvas to center
快速尝试您的代码会出现一个明显的异常,您忘记在paint方法上检查字符串是否为null
g.drawString(message, 40, BaseY+25);
g.drawString(information, 25, BaseY+45);
g.drawString(new String (GuessWord), 140, BaseY-120);
我知道您的作业很快就要完成了,但我强烈建议您学习如何读取异常堆栈跟踪、使用IDE和调试代码。把它看作是对你未来编程生涯的一种投资。
用户输入员工的出生日期,但任务要求您必须验证输入。 我希望应用程序显示的是一个错误,当用户输入生日的日期为33或什么,因为在B. O. D.中没有这样的一天。 此外,当用户单击保存时,文本字段中的数据应该保存到数组列表中。当用户单击打印时,保存在数组列表中的数据应显示为以前的信息。
我有一个课堂作业,用扫描器读取数据。 底部的部分只是为了测试我是否所有的信号都正常运行。但是,我安装的while循环似乎不想继续运行多次。它将接受一个值,然后如果我说是,我有更多的值(y或y),它将退出并打印任何一个胸部
我有一个想法,就是在实现if/else时使用数组haves(question,ans)将答案与问题联系起来,以确保答案是正确的 这是解决这个问题的好方法吗?帮我plz
下面是我的代码:
Java语法相关,什么情况下需要多打一个"\"?
我是一个Java GUI初学者,在让我的面板按照我想要的方式进行更新方面遇到了一些麻烦。基本上,当用户点击我的GUI中的一个按钮时,屏幕上当前的形状应该改变为与按钮按下对应的任何形状。我的代码在下面。更新后的形状在显示前被原始形状覆盖的问题。 最后,这里是我的框架类: 谢谢你的帮助!