Das ist mein Code. Ich möchte, dass der Schlüssel-Listener ein Rechteck erstellt, wenn ich eine Taste drücke. Ich habe Probleme, die Füllrechteckmethode in den Schlüsselhörer zu implementieren.Wie bekomme ich meinen Key-Listener, um ein Rechteck zu erstellen?
Ich habe versucht, den Schlüssel Listener zu trennen, aber dann weiß ich nicht, wie Sie sie miteinander verbinden, um die JPanel-Methoden zu verwenden.
import javax.swing.*;
import java.awt.*;
public class Keyboard
{
public static void main(String[] args)
{
JFrame frame = new JFrame("Keyboard");
frame.setLayout(new BorderLayout());
MyPanel displayPanel = new MyPanel();
frame.add(displayPanel, BorderLayout.CENTER);
frame.addKeyListener(displayPanel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().width, java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().height);
frame.setVisible(true);
}
}
MyPanel Klasse
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import javax.swing.JComponent;
import javax.swing.JPanel;
public class MyPanel extends JPanel implements KeyListener {
private boolean one;
private boolean two;
private boolean three;
private boolean four;
private boolean five;
private boolean six;
private boolean seven;
private boolean eight;
private boolean nine;
private boolean zero;
private boolean dash;
public MyPanel() {
one = false;
two = false;
three = false;
four = false;
five = false;
six = false;
seven = false;
eight = false;
nine = false;
zero = false;
dash = false;
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
setBackground(new Color(51, 25, 0));
for(int i=0; i<11; i++)
{
if(i%2 == 0)
{
g.setColor(Color.WHITE);
g.fillRect(i*(java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().width/11), 450, 212, 1000);
}
else
{
g.setColor(Color.BLACK);
g.fillRect(i*(java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().width/11), 450, 174, 1000);
}
if(one==true)
{
g.setColor(Color.BLUE);
g.fillRect(50,50,50,50);
repaint();
}
}
}
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode() ==KeyEvent.VK_1 && !one)
{
System.out.println("asdasda");
one = true;
}
else if(e.getKeyCode() ==KeyEvent.VK_2 && !two)
{
two = true;
}
else if(e.getKeyCode() ==KeyEvent.VK_3 && !three)
{
three = true;
}
else if(e.getKeyCode() ==KeyEvent.VK_4 && !four)
{
four = true;
}
else if(e.getKeyCode() ==KeyEvent.VK_5 && !five)
{
five = true;
}
else if(e.getKeyCode() ==KeyEvent.VK_6 && !six)
{
six = true;
}
else if(e.getKeyCode() ==KeyEvent.VK_7 && !seven)
{
seven = true;
}
else if(e.getKeyCode() ==KeyEvent.VK_8 && !eight)
{
eight = true;
}
else if(e.getKeyCode() ==KeyEvent.VK_9 && !nine)
{
nine = true;
}
else if(e.getKeyCode() ==KeyEvent.VK_0 && !zero)
{
zero = true;
}
else if(e.getKeyCode() == 189 && !dash)
{
dash = true;
}
}
public void keyReleased(KeyEvent e)
{
if(e.getKeyCode() ==KeyEvent.VK_1)
{
one = false;
}
else if(e.getKeyCode() ==KeyEvent.VK_2)
{
two = false;
}
else if(e.getKeyCode() ==KeyEvent.VK_3)
{
three = false;
}
else if(e.getKeyCode() ==KeyEvent.VK_4)
{
four = false;
}
else if(e.getKeyCode() ==KeyEvent.VK_5)
{
five = false;
}
else if(e.getKeyCode() ==KeyEvent.VK_6)
{
six = false;
}
else if(e.getKeyCode() ==KeyEvent.VK_7)
{
seven = false;
}
else if(e.getKeyCode() ==KeyEvent.VK_8)
{
eight = false;
}
else if(e.getKeyCode() ==KeyEvent.VK_9)
{
nine = false;
}
else if(e.getKeyCode() ==KeyEvent.VK_0)
{
zero = false;
}
else if(e.getKeyCode() == 189)
{
dash = false;
}
}
public void keyTyped(KeyEvent e)
{
System.out.println("Typed: " + e.getKeyChar());
}
}
[Verwenden von Tastenkombinationen] (http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html) – MadProgrammer