A simple basic question: calling a method return...

Hello

First of all, please excuse my english. I`ll do my best to explain myself.

I have readed some java books, but i still don´t have the practical experience to deal with the developing of serius java applications. My goal is to program java games, and that´s why im here asking my fist nooby question:

I wanna register on a “drawString” line, whenever the player hits any key on the keyboard. i was guessing to put it inside my paint method, but it keeps giving me an error.

Here is the code. Can someone help me:


import java.applet.*;
import java.awt.*;

public class Prueba extends Applet implements Runnable{
	Thread t;
	int i;
	
	public void init(){
		t = new Thread(this);
		t.start();
		
		i = 0;
	}
	
	public void run(){
		while(true){
			i++;
			repaint();
			
			try{
				t.sleep(1000/30);
			}catch(Exception ex){
			}	
		}
	}
	public void paint(Graphics g){
		g.drawString("i = "+i, 10, 20);
		
		g.drawString("message", 50, 80);
	}
	public boolean keyDown(Event e, int key)
	{
	  String message = "value = " + key;
	  return true;
	}
	
}

Please output the error you get.

firstly,

String message = "value = " + key;

you don’t do anything with this. I think you want to make message a field instead of local variable.
Then you can say:

g.drawString(message, 50, 80);

instead of

g.drawString("message", 50, 80);

You also need your class to implement KeyListener and go

addKeyListener(this);

in the init method

Thanks for the response.

For some reason i cannot see the message of the key being pressed. I get this error:

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

Here is my code with modifications:


import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class Prueba extends Applet implements Runnable, KeyListener{
	String message;
	Thread t;
	int i;
	
	public void init(){
		addKeyListener(this);
		t = new Thread(this);
		t.start();
		
		i = 0;
	}
	
	public void run(){
		while(true){
			i++;
			repaint();
			
			try{
				t.sleep(1000/30);
			}catch(Exception ex){;}	
		}
	}
	public void paint(Graphics g){
		g.drawString("i = "+i, 10, 20);
		g.drawString(message, 50, 80);
	}
	public void keyPressed(KeyEvent e) {
        message = "KEY PRESSED: " + e;
    }
	public void keyTyped(KeyEvent e) {;}
	public void keyReleased(KeyEvent e) {;}
}

That’s not the entire exception, but it’s most likely NullPointerException because the variable “message” is null and you can’t draw null strings :wink:

Change the line that reads:

String message;

to:

String message = "";

also, ra4king beat me to it, because I didn’t realize I wasn’t logged in, and couldn’t remember my password :frowning:

Thank you all guys. Now it’s working.