Voisiko joku heittää yksinkertaisen apple esimerkin, joka tulostaa textboxin:
Tämä on rivi 1
Tämä on rivi 2
Tämä on rivi 3
...
Tämä on rivi 100
Tämä on rivi 101
jne.. vaikka tuhat kertaa.
Mutta niin että aple tulee heti näkyviin, eikä
niin että aplen lataaminen kestää 3 minuuttia,
ja sitten nämä kaikki rivi olisivat valmiina siinä
textboxissa.
Voi olla myös niin että paineken painaluksesta
alkaa rivien tulostus.
Kiitos
Tämä on rivi 1
Tämä on rivi 2
Tämä on rivi 3
...
Tämä on rivi 100
Tämä on rivi 101
jne.. vaikka tuhat kertaa.
Mutta niin että aple tulee heti näkyviin, eikä
niin että aplen lataaminen kestää 3 minuuttia,
ja sitten nämä kaikki rivi olisivat valmiina siinä
textboxissa.
Voi olla myös niin että paineken painaluksesta
alkaa rivien tulostus.
Kiitos
Vastaukset 2
Vanhimmat
Kirjoita tekstikenttäsi valmiiksi tiedotoon, se saattaa nopeuttaa.
Eli luo tekstikenttä ja laita sinne haluttu teksti. Tallenna se.
Tekstikentta tk;
...//luo ja kirjoita sinne kamat
ObjectOuputStream dos = new ObjectOutputStream(new FileOutputStream("tk.in"));
dos.write(tk)//emmä muista miten tää menee oikeesti
...
...
Sitten lue tiedosto apletissasi
init(){
ObjectInputStream dis = new ObjectInputStream("tk.in");
Teksikentta tk =(Tekstikentta)dis.read(tk);
}
Ei tää oikeesti mee ihan näin, mutta idea pseudotasolla on kuitenkin tämä.
Sunin dokkareista selviää miten homma oikeesti tehdään. Jossain sanottiin myös että tämä nopeuttaisi applettien lataamista.
Itse asiassa valmiiski luodun ja initialisoidun apletinkin voi tallentaa tiedostoksi -->säästyy initaika?
Vaihtoehto kaks, nappi.
Luo vaan metodi, joka palautta halutun stringin.
Stringi luodaan silmukassa käyttäen StringBuffer -oliota.
käynnistä metodi nappia painamalla.
-Luo stringi käyttäen StringBuffer -oliota, se nopeuttaa hurjasti.
Heeps, itse asiassa kokeilin tuota itse, ja aikaa meni 541 ms.
tärkeimmät osat, apletti:
public void init(){
try{
java.net.URL url = new java.net.URL(this.getDocumentBase(),"a.tmp");
java.io.ObjectInputStream ois = new java.io.ObjectInputStream(url.openConnection().getInputStream());
textArea =(TextArea)ois.readObject();
this.setLayout(borderLayout);
this.add(textArea, BorderLayout.CENTER);
catch(Exception ec){}
}
Erillisen ohjelman tallentava metodi:
private void foo(){
TextArea a = new TextArea();
StringBuffer content = new StringBuffer();
for(int i =0;i