Newsgroup: it.comp.java
Titolo: DISPERAZIONE

Ragazzi, lo so sono una schiappa, ma sono proprio disperato.
questo programma dovrebbe creare un a  cerchio che si muove a destra alla
pressione del tasto "UP",
perchč diavolo non va???.. Non esegue neanke il metodo keyPressed()...
ho le lacrime agli occhi...:)... ringrazio comunque anticipatamente....
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class Uomo
{
 public static void main(String[] args)
 {
  Finestra frame=new Finestra();
  frame.show();
 }
}
class Finestra extends JFrame
{
 public Finestra()
 {
  setTitle("Uomo");
  setSize(640, 480);
  setDefaultCloseOperation(EXIT_ON_CLOSE);
  Spazio panel=new Spazio();
  getContentPane().add(panel);
 }
}
class Spazio extends JPanel
{
 Omino om;
 public Spazio()
 {
  setBackground(Color.white);
  javax.swing.Timer t;
  om=new Omino();
  Tastiera key=new Tastiera(om);
  addKeyListener(key);
  t= new javax.swing.Timer(10, new Azione());
  t.start();
 }
 public void paintComponent(Graphics g)
 {
  super.paintComponent(g);
  g.drawOval(om.GetX(),345, 100,100);
 }
 class Azione implements ActionListener
 {
  public void actionPerformed(ActionEvent e)
  {
   repaint();
  }
 }
}
class Omino
{
 public int x;
 public Omino()
 {
  x=0;
 }
 public int GetX()
 {
  return x;
 }
 public void MoveDx()
 {
  x++;
  System.out.println(x);
 }
 public void MoveSx()
 {
  x--;
 }
}
class Tastiera implements KeyListener
{
 public Omino pp;
 public Tastiera(Omino om)
 {
  pp=om;
  pp.MoveDx();
 }
 public void keyPressed(KeyEvent e)
 {
  int keycode= e.getKeyCode();
  if(keycode==KeyEvent.VK_UP)
   pp.MoveDx();
 }
 public void keyReleased(KeyEvent e){}
 public void keyTyped(KeyEvent e)
 { }
}

  }
 Ti rimando il codice con qualche(parecchie) modifiche(solo alcune sono
relative al bug, le altre sono piů che altro di sintesi). Preciso: non sono
esperto di Swing, sono andato a tastoni e ho visto che era questo il
problema.
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Uomo{
 public static void main(String[] args) {
  (new Finestra()).show();
 }
}
class Finestra extends JFrame{
 public Finestra() {
  setTitle("Uomo");
  setSize(640, 480);
  setDefaultCloseOperation(EXIT_ON_CLOSE);
  Omino om=new Omino();//mi serve un unico omino, quindi lo creo qui e lo
passo
  //sia a Spazio sia a Tastiera
  Spazio panel=new Spazio(om);
  addKeyListener(new Tastiera(om));
  getContentPane().add(panel);
 }
}
class Spazio extends JPanel{
 Omino om;
 public Spazio(Omino _om) {
  om=_om;
  setBackground(Color.white);
  (new Timer(10, new Azione())).start();
 }
 public void paintComponent(Graphics g) {
  super.paintComponent(g);
  g.drawOval(om.GetX(),345, 100,100);
 }
 class Azione implements ActionListener {
  public void actionPerformed(ActionEvent e)  {
   repaint();
  }
 }
}
class Omino {
 private int x=0; //se č public a che serve GetX????
 public int GetX() {
  return x;
 }
 public void MoveDx() {
  x++;
  System.out.println(x);
 }
 public void MoveSx() {
  x--;
 }
}
class Tastiera extends KeyAdapter {
 private Omino pp;
 public Tastiera(Omino om) {
  pp=om;
  pp.MoveDx();
 }
 public void keyPressed(KeyEvent e) {
  if(e.getKeyCode() == KeyEvent.VK_UP)
   pp.MoveDx();
  }
}