У меня есть KeyListener внутри файла с именем ввода, а также MouseWheellistener . В то время как MouseWheellistener работает так же, как и ожидалось, KeyListener не отвечает должным образом. Я просмотрел решения, но, поскольку я новичок в Java, я не могу точно определить проблему. Здесь есть 4 файла, кадр и панель находятся в папке окон, а ввод, а камера находятся в папке IDK: < /p>
Frame: < /p>
package window;
import javax.swing.*;
import java.awt.*;
import IDK.input;
public class frame {
public static JPanel p = new panel ();
public static void main (String [] args) {
createWindow ();
input.inputDetect ();
}
public static void createWindow () {
JFrame f = new JFrame ("frame");
f.add (p);
f.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
f.setMinimumSize (new Dimension (800, 500));
f.setLocationRelativeTo (null);
f.setVisible (true);
}
}
< /code>
Панель: < /p>
package window;
import javax.swing.*;
import java.awt.*;
import IDK.camera;
public class panel extends JPanel {
public void paint (Graphics g) {
super.paint (g);
g.fillRect (camera.viewBox.x, camera.viewBox.y, camera.viewBox.width, camera.viewBox.height);
}
}
< /code>
input: < /p>
package IDK;
import java.awt.event.*;
import window.frame;
public class input {
public static int notches;
public static int keyCode;
public static void inputDetect () {
frame.p.addMouseWheelListener (new MouseWheelListener () {
public void mouseWheelMoved (MouseWheelEvent e) {
notches = e.getWheelRotation();
camera.viewBoxCal ();
}
});
frame.p.addKeyListener (new KeyAdapter () {
public void keyPressed (KeyEvent e) {
System.out.println ("test");
}
});
}
}
< /code>
камера: < /p>
package IDK;
import java.awt.*;
import window.frame;
public class camera {
static float [] camInfo = new float [3];
public static Rectangle viewBox = new Rectangle ();
public static void viewBoxCal () {
camInfo [0] = 0.f;
camInfo [1] = 0.f;
if (input.notches > 0) {
if (camInfo [2] < 10) {
camInfo [2] += 0.1;
}
} else if (camInfo [2] > 0.1) {
camInfo [2] -= 0.1;
}
viewBox = new Rectangle ((int) camInfo [0], (int) camInfo [1], (int) (frame.p.getWidth () * camInfo [2] / 10), (int) (frame.p.getHeight () * camInfo [2] / 10));
System.out.println (viewBox);
return;
}
}
Подробнее здесь: https://stackoverflow.com/questions/795 ... rking-java