Pong KeyEvents

I'm having trouble making the arrow keys and q and a control my application.

Could someone give me some advice? How do I declare KeyEvents, and what are they added to? I have buttons in the contentpane and jlabels in a jpanel for the display of the pong game.

Thanks

import java.util.*;

import java.util.Timer.*;

import java.util.TimerTask;

import java.awt.Toolkit;

import java.text.*;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.awt.geom.*;

publicclass workextends JFrame{

int ballx;

int bally;

finalint ballwidth=10;

finalint ballheight=10;

finalint tablexmax = 500;

finalint tableymax = 400;

int xvect = 1;

int yvect = -1;

finalint lpaddlex= 0;

finalint rpaddlex= 480;

int lpaddley= 170;

int rpaddley=170;

finalint paddlelength = 60;

finalint paddlewidth = 20;

int refresh = 9;

int quit =1;

int p1score=0;

int p2score=0;

public JButton start =new JButton();

//paddle maneuvers

int delta1;

int delta2;

public JTextField status=new JTextField();

JPanel viewer=new JPanel();

// array of jbuttons

public JButton[] keyJButtons =new JButton[KeyEvent.KEY_LAST+1];

public JButton player1upJButton=new JButton();

public JButton player1downJButton =new JButton();

public JButton player2upJButton=new JButton();

public JButton player2downJButton =new JButton();

public JLabel leftpaddle=new JLabel();

public JLabel rightpaddle =new JLabel();

public JLabel balllabel =new JLabel();

public JButton stop =new JButton();

public JTextField score1 =new JTextField();

public JTextField score2 =new JTextField();

//new

int roundcount=0;

public work()

{

createUserInterface();

}

privatevoid createUserInterface()

{

Container contentPane = getContentPane();

contentPane.setBackground(Color.GREEN);

contentPane.setLayout(null );

score1=new JTextField();

score1.setBounds(300, 0, 20, 20);

score1.setEditable(false);

score1.setText(String.valueOf(p1score));

contentPane.add(score1);

score2=new JTextField();

score2.setBounds(250, 0, 20, 20);

score2.setEditable(false);

score2.setText(String.valueOf(p2score));

contentPane.add(score2);

viewer=new JPanel();

viewer.setLayout(null);

viewer.setBounds (25, 25, 500, 400);

viewer.setBackground(Color.BLACK);

viewer.setVisible(true);

contentPane.add(viewer);

status =new JTextField();

status.setBounds(25, 450, 150, 20);

status.setText("Game in Progress...");

status.setEditable(false);

contentPane.add(status);

stop=new JButton();

stop.setBounds(650, 200, 140, 40);

stop.setText("Stop to Quit");

contentPane.add(stop);

stop.addActionListener(

new ActionListener()

{

publicvoid actionPerformed(ActionEvent event)

{

halt(event);

}

});

start =new JButton();

start.setBounds(550, 200, 80, 40);

start.setText("Reset");

contentPane.add(start);

start.addActionListener(

new ActionListener()

{

publicvoid actionPerformed(ActionEvent event)

{

commence(event);

}

});

player1upJButton=new JButton();

contentPane.add(player1upJButton);

keyJButtons[KeyEvent.VK_Q]= player1upJButton;

player1upJButton.setBounds(550, 380, 80, 40);

contentPane.add(player1upJButton);

player1upJButton.setText("Down");

player1upJButton.addActionListener(

new ActionListener()

{

publicvoid actionPerformed(ActionEvent event)

{

poop(event);

}

});

player1downJButton=new JButton();

player1downJButton.setBounds(550, 300, 80, 40);

player1downJButton.setText("up");

contentPane.add(player1downJButton);

keyJButtons[KeyEvent.VK_DOWN]= player1downJButton;

player1downJButton.addActionListener(

new ActionListener()

{

publicvoid actionPerformed(ActionEvent event)

{

p1d(event);

}

});

player2upJButton=new JButton();

contentPane.add(player2upJButton);

keyJButtons[KeyEvent.VK_Q]= player2upJButton;

player2upJButton.setBounds(650, 380, 80, 40);

player2upJButton.setText("Down");

player2upJButton.addActionListener(

new ActionListener()

{

publicvoid actionPerformed(ActionEvent event)

{

p2u(event);

}

});

player2downJButton=new JButton();

player2downJButton.setText("up");

contentPane.add(player2downJButton);

player2downJButton.setBounds(650, 300, 80, 40);

keyJButtons[KeyEvent.VK_A]= player2downJButton;

player2downJButton.addActionListener(

new ActionListener()

{

publicvoid actionPerformed(ActionEvent event)

{

p2d(event);

}

});

leftpaddle=new JLabel();

leftpaddle.setIcon(new ImageIcon("paddle.jpg"));

leftpaddle.setBounds(lpaddlex, lpaddley, paddlewidth, paddlelength);

leftpaddle.setHorizontalAlignment(JLabel.CENTER);

viewer.add(leftpaddle);

leftpaddle.setVisible(true);

leftpaddle.repaint();

rightpaddle =new JLabel();

rightpaddle.setIcon(new ImageIcon("paddle.jpg"));

rightpaddle.setBounds(rpaddlex, rpaddley, paddlewidth, paddlelength);

rightpaddle.setHorizontalAlignment(JLabel.CENTER);

viewer.add(rightpaddle);

rightpaddle.setVisible(true);

rightpaddle.repaint();

balllabel=new JLabel();

balllabel.setIcon(new ImageIcon("ball.jpg"));

balllabel.setBounds(ballx, bally, ballwidth, ballheight);

balllabel.setHorizontalAlignment(JLabel.CENTER);

viewer.add(balllabel);

balllabel.setVisible(true);

balllabel.repaint();

viewer.repaint();

setSize(800,600);

setVisible(true);

setTitle("Trace Pong");

center();

refresh();

}

publicvoid halt(ActionEvent event)

{

center();

quit=0;

player1upJButton.setEnabled(false);

player2upJButton.setEnabled(false);

player1downJButton.setEnabled(false);

player2downJButton.setEnabled(false);

start.setEnabled(false);

}

publicvoid commence(ActionEvent event)

{

center();

quit=1;

}

publicvoid poop(ActionEvent event)

{

delta1=1;

}

publicvoid p1d(ActionEvent event)

{

delta1=-1;

}

publicvoid p2u(ActionEvent event)

{

delta2=1;

}

publicvoid p2d(ActionEvent event)

{

delta2=-1;

}

publicvoid refresh()

{

if(refresh==1)

{

setSize(801, 601);

refresh=0;

}

if (refresh == 0)

{

setSize(800,600);

refresh =1;

}

if (roundcount==5)

{

quit=0;

status.setText(String.valueOf("Player1 Wins"));

if(p2score>p1score)

{

status.setText(String.valueOf("Player2 Wins"));

}

}

if (quit==1)

{

frame();

}

}

publicvoid render()

{

leftpaddle.setBounds(lpaddlex, lpaddley, paddlewidth, paddlelength);

rightpaddle.setBounds(rpaddlex, rpaddley, paddlewidth, paddlelength);

balllabel.setBounds(ballx, bally, ballwidth, ballheight);

viewer.repaint();

setSize(800,600);

setVisible(true);

}

publicvoid center()

{

ballx=250;

bally= 200;

lpaddley= 170;

rpaddley=170;

}

publicvoid wallcollission()

{

yvect *= -1;

frame();

}

publicvoid paddlecollission()

{

xvect *= -1;

frame();

}

publicvoid checkside()

{

if ((ballx)==paddlewidth||(ballx+ballwidth==tablexmax-paddlewidth))

{

checkpaddlepos();

}

if(bally==0||bally+ballwidth==tableymax)

{

wallcollission();

}

}

publicvoid checkpaddlepos()

{

if((bally)<=lpaddley+paddlelength&&(bally)>=lpaddley)

{

paddlecollission();

}

if ((bally)<=rpaddley+paddlelength&&(bally)>=rpaddley)

{

paddlecollission();

}

else

gameover();

}

publicvoid gameover()

{

status.setText("GameOver");

if (ballx==paddlewidth)

{

status.setText("Player2 Won");

p2score++;

roundcount++;

}

if(ballx+ballwidth==tablexmax-paddlewidth)

{

status.setText("Player1 Won");

p1score++;

roundcount++;

}

score1.setText(String.valueOf(p1score));

score2.setText(String.valueOf(p2score));

center();

refresh();

}

publicvoid frame()

{

for(int i=1; i<5000000; i++)

{

Math.sqrt((double)i);

}

lpaddley+=delta1*25;

rpaddley+=delta2*25;

if (lpaddley>=440)

{

lpaddley=440;

}

if (lpaddley<=0)

{

lpaddley=0;

}

if (rpaddley>=440)

{

rpaddley=440;

}

if (rpaddley<=0)

{

rpaddley=0;

}

ballx+=xvect;

bally+=yvect;

delta1=0;

delta2=0;

checkside();

render();

refresh();

}

publicstaticvoid main( String[] args )

{

work application =new work();

application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

}// end method main

}

[18474 byte] By [eboteea] at [2007-11-27 5:57:43]
# 1
Quit multi-posting: http://forum.java.sun.com/thread.jspa?threadID=5178262&tstart=0
camickra at 2007-7-12 16:31:06 > top of Java-index,Desktop,Core GUI APIs...