Newsgroup: it.comp.java
Titolo: Debug con Eclipse

Come si fa a fare il debugging di un programma Java con Eclipse?
Se creo un breakpoint e lancio il thread selezionando "Run/Debug As/
Java Application" quando Eclipse arriva al breakpoint nella finestra
in alto a destra (perspective "Debug") sotto il tag "Variables"
vengono visualizzati gli oggetti di quel blocco di codice, ma nessun
dato primitivo.
Come si fa a visualizzare anche i dati primitivi?

 Come si fa a visualizzare anche i dati primitivi?
Che sono i dati primitivi?
-- 
Andrea Francia
http://www.andreafrancia.it/


byte, int, short, long, float, double, char, boolean

 byte, int, short, long, float, double, char, boolean
Ci vai sopra li selezioni e a tua scelta fai, ad esempio, "watch", 
"inspect"  oppure aspetti e ti si apre un box con il valore. 

 "inspect"  oppure aspetti e ti si apre un box con il valore.
Quando li seleziono "watch" e' disattivato e "inspect" e
"display" mi fanno apparire la scritta "No explict return value".



Manda un esempio...

 Manda un esempio...
Ho risolto il problema del debug, adesso pero' ho un altro problema:
Ho scritto un programma che anagramma una parola, un giocatore inserisce
la parola e un altro giocatore deve indovinare la parola inserita
vedendo la parola anagrammata.
Alla base della finestra del programma c'e' un oggetto "tfield" di tipo
JTextField.
Vorrei che finche' il giocatore scrive i caratteri giusti, il testo
venga scritto nel "tfield", quando invece i caratteri sono sbagliati,
il "tfield" rimanga immutato, come se il carattere sbagliato non sia
stato premuto.
Non riesco a evitare che l'ultimo tasto digitato venga sempre incluso
nel "tfield", qualcuno sa' come devo fare per risolvere il problema?
Il programma e' composto da due file, i file sono:
********** AnagrammaTesto.java **********
package anagramma;
import java.util.Random;
public class AnagrammaTesto
{
 public String anagrammaParola(String s) throws TestoAsteriscoException
 {
  int  lun=s.length();
  int  contatore=0;
  int  pos;
  char[] buffer=new char[lun];
  char[] buffer2=new char[lun];
  String  ret;
  char carattere='X';
  if (s.contains("*"))
   throw new TestoAsteriscoException();
  Random rand=new Random();
  buffer=s.toCharArray();
  while (contatore<lun)
  {
   pos=rand.nextInt(lun);
   if (buffer[pos]!='*')
   {
    buffer[pos]='*';
    carattere=s.charAt(pos);
    buffer2[contatore]=carattere;
    contatore++;
   }
  }
  ret=s.copyValueOf(buffer2);
  return(ret);
 }
}
class TestoAsteriscoException extends Exception
{
 public String toString()
 {
  return("Il testo non deve contenere asterischi!");
 }
}
********** Anagramma.java **********
package anagramma;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Anagramma
{
 public static void main(String[] args)
 {
  AnagrammaGUI oggAnagramma=new AnagrammaGUI();
  oggAnagramma.chiediTesto();
  oggAnagramma.visualizzaTestoAnagrammato();
 }
}
class AnagrammaGUI
{
 private String testoDigitato,testoAnagrammato;
 private JFrame f;
 private JPanel p;
 private JTextField tfield;
 private char tastoPremuto;
 private int posizione;
 public void chiediTesto()
 {
  try
  {
   testoDigitato=JOptionPane.showInputDialog("Digita il testo da 
anagrammare");
   AnagrammaTesto at=new AnagrammaTesto();
   testoAnagrammato=at.anagrammaParola(testoDigitato);
  }
  catch (Exception exc)
  {
   JOptionPane.showMessageDialog(null,exc.toString(),"ERRORE",
    JOptionPane.ERROR_MESSAGE);
  }
 }
 public void visualizzaTestoAnagrammato()
 {
  f=new JFrame("Trova la parola anagrammata");
  tfield=new JTextField();
  f.add(tfield,BorderLayout.SOUTH);
  f.add(new ScrittaAnagrammata(),BorderLayout.NORTH);
  posizione=0;
  tfield.addKeyListener(new LeggiTasti());
  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  f.setSize(500,500);
  f.setVisible(true);
 }
 class ScrittaAnagrammata extends JPanel // Classe interna
 {
  public void paintComponent(Graphics g)
  {
   super.paintComponent(g);
   this.setPreferredSize(new Dimension(500,30));
   this.setBackground(Color.CYAN);
   this.setFont(new Font("Serif",Font.PLAIN,20));
   g.drawString("Testo anagrammato: ",10,20);
   g.setColor(Color.BLUE);
   String t="[";
   t=t.concat(testoAnagrammato);
   t=t.concat("]");
   g.drawString(t,180,20);
  }
 }
 class LeggiTasti extends KeyAdapter // Classe interna
 {
  public void keyTyped(KeyEvent ke)
  {
   tastoPremuto=ke.getKeyChar();
   if (tastoPremuto=='\b')
   {
    if (posizione>0) posizione--;
    return;
   }
   if (testoDigitato.charAt(posizione)==tastoPremuto)
   {
    posizione++;
   }
   String x=testoDigitato.substring(0, posizione);
   tfield.setText(x);
  }
 }
}