PDA

View Full Version : Problemino Java


Corvo80
18-01-2006, 16:42
La seguente applet dovrebbe costruire una semplice interfaccia con 2 labels e 2 text fields. Il programma costruisce un vettore dei 4 oggetti (nell'ordine la prima label, il primo field, la seconda label e il secondo field) e poi lo smonta costruendo l'interfaccia, tramite un cast a component. Tuttavia, a quanto pare il vettore si riempie solo con le due labels e non capisco come mai...

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.util.*;

public class FirstApplet extends Applet
implements ActionListener {

private Label campo1Label;
private TextField campo1Field;
private Label campo2Label;
private TextField campo2Field;

public void init() {
Vector lista1 = new Vector();
setLayout(new FlowLayout());

campo1Label = new Label("Campo 1");
lista1.add(0, campo1Label);

campo1Field = new TextField(10);
campo1Field.addActionListener(this);
lista1.add(1, campo1Field);

campo2Label = new Label("Campo 2");
lista1.add(2, campo2Label);

campo2Field = new TextField(10);
campo2Field.addActionListener(this);
lista1.add(3, campo2Field);

int i;
for (i=0; i<4; i++) {
Object obj = (Object)lista1.get(i);
add((Component<)obj);
lista1.remove(i);
}
}

public void actionPerformed(ActionEvent event) {
String campo1 = campo1Field.getText();
System.out.println(campo1);
String campo2 = campo2Field.getText();
System.out.println(campo2);
}
}

Corvo80
18-01-2006, 16:52
Scusate, ho risolto.

kingv
18-01-2006, 17:02
il problema era la remove(), vero?

Corvo80
18-01-2006, 17:28
eh gią! Siccome ogni volta toglievo l'elemento i-esimo all'interno del for, ne saltava uno ogni due...

:D

pinok
18-01-2006, 22:22
eh gią! Siccome ogni volta toglievo l'elemento i-esimo all'interno del for, ne saltava uno ogni due...

:D
Tipcamente, se fai un for su i che si incrementa, quando fai un remove devi fare anche un i--; per evitare di "saltare" un giro ;)
C'ero venuto scemo anni fa, ora non ci casco pił :D