Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
problem beim auslesen von text aus einem textfeld...
ich habe in einem java-applet mehrere textfelder durch eine schleife in einem Array erzeugen lassen.
dies funktioniert auch super, hier der quelltext:
Code:
TextField x[] = new TextField[anztrack];
for(i=0;i<anztrack;i++) {
x[i] = new TextField(gga);
x[i].setBounds(10,hoehe,110,20);
this .add(x[i]);
hoehe=hoehe+25;
}
wie kann man nun den text aus diesen text feldern wieder auslesen?
normaler weise geht dies ja über die methode getText() in der Form: namedestextfeldes.getText().
das müsste dann, bezogen auf die textfelder in dem array in der form x.getText() funktionieren. Dies ist aber leider nicht der fall, wo ist der fehler?
(also java gibt keine fehler zurück, aber an der stelle, wo der ausgelesene text erscheinen sollte, wird nichts eingefügt)
In einem Array werden Daten im Typ Objekt gespeichert.
Das heißt, wenn Du auf ein Array zugreifen willst, von dem Du weißt, dass dort Textfeld-Objekte gespeichert sind, musst Du die Objekte aus dem Array in den passenden Datentyp casten.
@L-ectorn-X
In TextField[] x ist bereits alles TextField, x.getText() müsste tatsächlich funktionieren.
@DarkLord
- Kann es sein, dass in den Textfeldern nichts steht? (Also "" zurückgegeben wird).
- Funktioniert die Anzeige auch richtig? (Ruf sie mal mit einem kleinen Text auf, damit das sicher ist).
also.. in die textfelder hab ich auf jeden fall immer was reingeschrieben - so doof bin selbst ich net - ich kann auch vorher den wert von i ausdrucken lassen. die anzeige funktioniert 1a spitzenklasse (ich lasse einen html quellcode ausdrucken)
also.. in die textfelder hab ich auf jeden fall immer was reingeschrieben - so doof bin selbst ich net - ich kann auch vorher den wert von i ausdrucken lassen. die anzeige funktioniert 1a spitzenklasse (ich lasse einen html quellcode ausdrucken)
hast du dir den quelltext gezogen und ihn dann entsprechend verändert und dann zum laufen gebracht? dann lad den fertigen kram doch bitte eb mal hoch, damit ich ihn mir ziehen kann.... ich ,der echte Dark, der auch damit angefangen hat, verstehe nach den ganzen änderungen, die meine freundin grad an dem quelltext gemachtr hat, nämlich mein eigenes zeug nich mehr... ....
also, ich hab jetzt mein script etwas verändert. nun soll es quasi eine bildergallerie erstellen, das prinzip mit dem ok button und den text feldern ist das gleiche, nur sollen diesmal die urls der bilder statt den titel eingegben werden. hier bekomme ich jedoch beim auslesen des textfeldes *anzpics* einen fehler:
E:\Java\Pictures\Pictures.java:43: int cannot be dereferenced
anzpics = Integer.parseInt(anzpics.getText());
was will jCreator mir damit sagen?
hier nochmal der komplette Quellcode (könnten noch fehler drin sein, da ich es ja noch nicht ausprobieren konnte...):
Code:
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class Pictures extends Applet implements ActionListener {
TextArea ausgabe;
TextField thema, anzpics;
TextField[] textFields;
Button ok;
// int control = 0;
public void init() {
thema = new TextField("thema");
thema.setBounds(10, 30, 110, 20);
this.add(thema);
anzpics = new TextField("");
anzpics.setBounds(250, 30, 30, 20);
this.add(anzpics);
ok = new Button("OK");
ok.setBounds(280, 30, 20, 20);
ok.addActionListener(this);
this.add(ok);
ausgabe = new TextArea("quellcode wird hier ausgegeben", 6, 70, 1);
ausgabe.setBounds(130, 60, 400, 400);
this.add(ausgabe);
this.setLayout(null);
}
public void actionPerformed(ActionEvent e) {
int anzpics;
int hoehe = 90;
int j=0;
if( textFields == null ){
anzpics = Integer.parseInt(anzpics.getText());
textFields = new TextField[ anzpics ];
for (int i = 0; i < anzpics; i++) {
textFields[i] = new TextField();
textFields[i].setBounds(10, hoehe, 110, 20);
this.add(textFields[i]);
hoehe = hoehe + 25;
}
}
else{
int anztrack = textFields.length;
ausgabe.setText("<html><head><link rel=\"stylesheet\" type=\"text/css\" href=\"../style/pics.css\">");
ausgabe.append("<title>[my sweet pandemonium] Pictures -> </title></head><body>");
ausgabe.append("<table><tr><td><p class=\"uberschrift\"><nobr>");
ausgabe.append("& Pictures : April 2003 (11 Pictures)</nobr></td>");
ausgabe.append("<td><p align=\"center\" class=\"uberschrift2\"><a href=\"pictures.htm\">Übersicht</a>");
ausgabe.append("</td></nobr></tr></table>
<table><tr>");
for (int i = 0; i < anzpics; i++) {
ausgabe.append("<td><nobr><a href=\"sky0403/sky0403-1.jpg\" target=\"_blank\">");
ausgabe.append("<img src=\"sky0403/smallsky0403-1.jpg\"></a></nobr></td>");
j++;
if(j==3){
ausgabe.append("</tr><tr>");
j=0;
}
}
ausgabe.append("</nobr></tr></table></body></html>");
}
}
}
Du benutzt in einer Zeile den geichen Variablennamen für zwei verschiedene Objekte.
Weiß jetzt nicht, vielleicht schnallt es der Compiler, wenn Du schreibst:
ja, damit ist er zufrieden. nur leider taucht dann der nächste fehler in der for schleife auf....
btw: warum hat er es bei dem anderen proggy geschluckt und hier nicht? das war doch nichts anders, ausser dass die variable anztracks und net anzpics hiess...
Dann solltest Du in Erwägung ziehen, die Variablennamen zu ändern.
Das Problem ist, dass Du einmal eine lokale Variable vom Typ int und zur gleichen Zeit eine Instanz der Klasse JTextField "anzpics" genannt hast. Der Compiler kann jetzt nicht mehr unterscheiden, welches Objekt Du meinst.