У меня есть рамка, которая как прямоугольник в нем. Я хочу знать, как я могу переместить прямоугольник, если я нажал клавиши со стрелками. Я искал и нашел несколько примеров, но ничего не получалось (странно, как это должно быть просто, что нужно сделать)Как переместить прямоугольник со стрелками?
Вот мой Прямоугольник класс:
public class PlayerOne implements KeyListener {
int x,y;
public PlayerOne(JPanel panel){
this.x = panel.getWidth()/2;
this.y = panel.getHeight()/2;
}
public void paint(Graphics g){
g.setColor(Color.RED);
g.fillRect(125, 480, 60, 10);
}
@Override
public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub
int keyCode = arg0.getKeyCode();
if(keyCode == arg0.VK_KP_RIGHT){
this.x+=5;
}
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
}
Это главное:
public class PingPong extends JPanel {
private static final long serialVersionUID = -4170574729049260633L;
//Initialize
Table table = new Table();
PlayerOne po = new PlayerOne(this);
public void paintComponent(Graphics g){
super.paintComponent(g);
table.paint(g);
po.repaint(g);
}
public static void main(String[] args){
JFrame frame = new JFrame();
frame.setTitle("Pong");
frame.setSize(326, 533);
frame.add(new PingPong()).setBackground(Color.DARK_GRAY);
frame.getContentPane().setBackground(Color.DARK_GRAY);
frame.setVisible(true);
}
}
Вам нужен «KeyListener». –
@CoolGuy Я добавил один, все еще, я понятия не имею, как я могу сделать прямоугольник двигаться ... Я отредактировал свой пост, можете ли вы взглянуть, пожалуйста? –
с помощью KeyBindigs вместо KeyListener, краска должна быть paintComponent (с супер. PaintComponent), а не членом KeyListener или каким-либо другим, но реальным JComponent, например. JPanel, рисование должно быть инициализировано repaint() из действия не от самого себя (может вызвать бесконечный цикл) из paintComponent – mKorbel