【发布时间】:2015-04-03 17:35:26
【问题描述】:
我不知道我是否遗漏了一些非常基本的东西,但我有一个静态方法,它返回一个静态整数,我试图将它分配给一个不同的静态整数。我的代码是静态的,但我不断收到错误消息,“无法从类型 KeyboardInput 对非静态方法 getX() 进行静态引用”(方法和类的名称只是为了说明这一点)它告诉我解决方案是使方法静态,但它已经是这样我彻底迷路了。
代码如下:
使用该方法的类-
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Window extends JFrame{
JPanel panel;
ImageIcon imgIcon;
JLabel label;
private static int xLoc = KeyboardInput.getX(); // errors on this line
private static int yLoc = KeyboardInput.getY(); // and errors on this line
public Window(String name){
super(name);
setExtendedState(JFrame.MAXIMIZED_BOTH);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);
//addKeyListener(new KeyboardInput());
panel = new JPanel();
imgIcon = new ImageIcon("rorschach.jpg");
label = new JLabel(imgIcon);
label.setLocation(xLoc, yLoc);
label.setSize(50,50);
panel.add(label);
add(panel);
setVisible(true);
}
}
制作方法的类-
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.Timer;
public class KeyboardInput implements KeyListener, ActionListener {
private boolean goUp = false;
private boolean goDown = false;
private boolean goLeft = false;
private boolean goRight = false;
private static int x = 0;
private static int y = 0;
public static int getX(){
return x;
}
public static int getY(){
return y;
}
Timer timer;
public KeyboardInput(){
timer = new Timer(100, this);
}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_W) {
goUp = true;
}
if (e.getKeyCode() == KeyEvent.VK_S) {
goDown = true;
}
if (e.getKeyCode() == KeyEvent.VK_A) {
goLeft = true;
}
if (e.getKeyCode() == KeyEvent.VK_D) {
goRight = true;
}
}
@Override
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_W) {
goUp = false;
}
if (e.getKeyCode() == KeyEvent.VK_S) {
goDown = false;
}
if (e.getKeyCode() == KeyEvent.VK_A) {
goLeft = false;
}
if (e.getKeyCode() == KeyEvent.VK_D) {
goRight = false;
}
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void actionPerformed(ActionEvent e) {
if (goUp) {
y -= 5;
}
if (goDown) {
y += 5;
}
if (goLeft) {
x -= 5;
}
if (goRight) {
x += 5;
}
if (goUp && goDown) {
y += 5;
}
if (goLeft && goRight) {
x += 5;
}
}
}
这个项目显然没有完成,但我不认为我现在应该得到这些错误,希望能解决这个问题。
提前致谢!
【问题讨论】:
-
为我工作。清理并重建。
-
我有并且我继续收到错误
标签: java eclipse swing static non-static