好的,我是Java的新手。我的问题是:
我有一个叫做“控制”的课程。此类实现KeyListener并能够读取密钥代码。 我还有另一个叫做“显示”的课程。如果按下某个键,我可以将Control打印文本到控制台,这样就可以了。但是现在如果按下某个键,我想让Control类更改一个int X,并将此值发送给Display中的方法。显示有一个方法,应该对值做一些事情。
以下是新的代码段:
CONTROL.JAVA
public class Control实现KeyListener {
private Display display;
private int x = 0;
public Control(){
}
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_D){
x++;
System.out.println("D");
}
else if (e.getKeyCode() == KeyEvent.VK_A){
x--;
System.out.println("A");
}
display.DoSomethingWithX(x);
}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
}
DISPLAY.JAVA
公共类显示扩展JPanel {
public Display(){
JFrame main = new JFrame("Unnamed");
main.add(this);
main.setSize(xWidth, yHeight);
main.setVisible(true);
main.setDefaultCloseOperation(main.EXIT_ON_CLOSE);
main.addKeyListener(new Control());
main.setFocusable(true);
}
public void DoSomethingWithX(int x){
Graphics g;
g.setColor(c); //Let's assume c is already defined somewhere.
g.drawLine(x, 25, x, 25); //Don't mind the y value. It is least important.
}
public static void main(String[] args){
Display display = new Display();
}
}
答案 0 :(得分:0)
您需要在Control
到Display
对象中引用,以便您可以这样做
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_D){
x++;
}
else if (e.getKeyCode() == KeyEvent.VK_A) {
x--;
}
//display is instance of Display class
display.doSomthingWithXValue(x);
}