Toon posts:

[ JAVA ] setText werkt niet, Sytem.out.println() wel ...

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey..

ik ben momenteel druk bezig met een java programma te brouwen.. en als onderdeel daarvan wil ik ook een logbok in *.txt bij gaan houden.


ik heb een klasse gemaakt met een methode schrijf_logboek, hierin pakt ie een het *.txt bestand, en alle strings die ik met de methode mee geef zet ie er mooi in.

Dit gaat allemaal goed, maar ik snap 1 ding niet:

Daarnaast heb ik een methode LogBoek_Panel aangemaakt, wat het TextArea in een paneel weergeeft. hierin heb ik ook een methode gebakken:

updateLogBoek( String info );

Als ik in die methode een een nieuwe methode opneem om te laten zien in een
TextArea:

logBoek.setText( info );

word de string niet weergegeven. In deze methode heb ik ook staan:

System.out.println( info );

en daar word de string wel weer gegeven. :? :?

en als ik in de klasse

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 22:02
Gaat het over deze TextArea klasse? Daarin zie ik geen setText, maar wel een insert functie om een stuke tekst zichtbaar te maken in een TextArea.

Verwijderd

Topicstarter
Sybr_E-N schreef op 10 april 2004 @ 22:09:
Gaat het over deze TextArea klasse? Daarin zie ik geen setText, maar wel een insert functie om een stuke tekst zichtbaar te maken in een TextArea.
ja, dat is inderdaat een TextArea, maar een insert functie om een stukje tekst zichtbaar te maken? :?

Dat is toch niet nodig?
Ik heb ook ff zitten testen maar als ik de methode

updateLogboek( String info ) in de klasse:

Logboek_Panel

aanroep, doet hij het wel gewoon, dus die insert functie lijk mij overbodig.

Maar onder heb mom van je moet alles toch us probberen om het op te lossen, wat is daar de source van?

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 26-05 15:28

Robtimus

me Robtimus no like you

Sybr_E-N schreef op 10 april 2004 @ 22:09:
Gaat het over deze TextArea klasse? Daarin zie ik geen setText, maar wel een insert functie om een stuke tekst zichtbaar te maken in een TextArea.
Ten eerste, die setText erft ie van zijn pappie: java.awt.TextComponent#setText(String).

Ten tweede, ik hoop dat hij dan eerder voor javax.swing.JTextArea kiest. En je houdt het niet voor mogelijk, ook deze erft zijn setText van zijn pappie, die toevalligerwijs JTextComponent heet :P

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 26-05 15:28

Robtimus

me Robtimus no like you

Verwijderd schreef op 10 april 2004 @ 22:15:
Maar onder heb mom van je moet alles toch us probberen om het op te lossen, wat is daar de source van?
Source van de insertText(String str, int pos):
Java:
1
text = text.substring(0, pos) + str + text.substring(pos);
text is hier een String field van de TextArea.

Ok, eerlijk gezegd doet hij het waarschijnlijker via zijn TextComponentPeer (dit doet hij als deze Peer null is), maar de implementatie zal niet veel verschillen.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 22:02
IceManX schreef op 10 april 2004 @ 22:17:
[...]
Ten eerste, die setText erft ie van zijn pappie: java.awt.TextComponent#setText(String).

Ten tweede, ik hoop dat hij dan eerder voor javax.swing.JTextArea kiest. En je houdt het niet voor mogelijk, ook deze erft zijn setText van zijn pappie, die toevalligerwijs JTextComponent heet :P
Ja, snap ik maar ik ga/ging er vanuit dat ook de geerfde methoden ook stonden opgesomt, bij de "Method Summery" en dan "Methods inherited from baggerClass...", en ik zag ze hier er niet bijstaan vandaar mijn vraag.

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 26-05 15:28

Robtimus

me Robtimus no like you

De allerlaatste method onder de kop "Methods inherited from class java.awt.TextComponent" is toch echt setText.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 22:02
offtopic:
Ik weer alleen loeren bij Component |:(

[ Voor 21% gewijzigd door Sybr_E-N op 10-04-2004 22:41 ]


Verwijderd

Topicstarter
IceManX schreef op 10 april 2004 @ 22:21:
[...]
Source van de insertText(String str, int pos):
Java:
1
text = text.substring(0, pos) + str + text.substring(pos);
text is hier een String field van de TextArea.

Ok, eerlijk gezegd doet hij het waarschijnlijker via zijn TextComponentPeer (dit doet hij als deze Peer null is), maar de implementatie zal niet veel verschillen.
Op deze manier werkt het ook niet.......

Verwijderd

Verwijderd schreef op 10 april 2004 @ 22:54:
[...]


Op deze manier werkt het ook niet.......
Zo moet je er ook geen gebruik van maken. De reactie van IcemanX was alleen omdat jij om de source vroeg. Dit is hoe het (waarschijnlijk) intern gebeurt. En de methode setText zou dus echt moeten werken (misschien is de append methode mooier maar ach, that's up to you!)

Verwijderd

Topicstarter
Verwijderd schreef op 11 april 2004 @ 12:03:
[...]


Zo moet je er ook geen gebruik van maken. De reactie van IcemanX was alleen omdat jij om de source vroeg. Dit is hoe het (waarschijnlijk) intern gebeurt. En de methode setText zou dus echt moeten werken (misschien is de append methode mooier maar ach, that's up to you!)
Op dit moment ben ik instaat alles uit te voeren en te probberen. Ik heb dat stukje code in mijn aplicatie gebakken.. en getest en geen verschil vandaar de melding "Dit werkt ook niet........"

oke.... wat is de append methode volgen jouw????

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 26-05 15:28

Robtimus

me Robtimus no like you

Lees eens goed de API door, in de eerste post van Sybr_E-N staat een link. Daarin staat bijna alles uitstekend beschreven.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Verwijderd

Post anders eens wat code (geen grote lappen aub :) ) misschien dat je de functie gewoon op een verkeerde plaats aanroept?? En de append methode: voor
JTextArea http://java.sun.com/j2se/...#append(java.lang.String)
en TextArea http://java.sun.com/j2se/...#append(java.lang.String)

Verwijderd

Topicstarter
Dit is de klasse waar het om draait:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.awt.*; 
import java.io.*; 


class Logboek_Panel extends Canvas 
{ 
  String info; 
  Panel logBoekPaneel; 
  TextArea logBoek; 
  String logBoekInfo; 
  String eerdereInfo; 
   
  public Logboek_Panel() 
  { 
    logBoekPaneel = new Panel(); 
    logBoekPaneel.setLayout( new GridLayout( 1, 1, 0, 0) ); 
    logBoekPaneel.setBounds( 155, 505, 640, 90); 
     
    logBoek = new TextArea( "", 3, 3, logBoek.SCROLLBARS_VERTICAL_ONLY ); 
    logBoekPaneel.add( logBoek );   
  } 
   
  public void updateLogboek( String info ) 
  { 
     
    eerdereInfo = logBoek.getText(); 
    logBoek.setText( info + "\n" + eerdereInfo ); 
    System.out.println( info ); 
    return; 
  } 
}

Dit is een klasse waarin het niet lukt om in de mehtode updateLogboek, logBoek.setText() uit te voeren.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import java.io.*; 


class Scrhijf_LogBoek 
{ 
  BufferedWriter schrijfLogBoek; 
  String tijd =  "00:00:00", logBoekInfo; 
  String datum =  "09-04-2004"; 
  Logboek_Panel  logboek; 
   
   
  public Scrhijf_LogBoek () 
  { 
    logboek = new Logboek_Panel(); 
  } 
   
   
  public void Scrhijf_LogBoek( String Info ) 
  { 
    try 
    { 
      schrijfLogBoek = new BufferedWriter( new FileWriter
                     ( "logboek_20040409.txt", true  )); 
      logBoekInfo = datum + "     " + tijd + "     " + Info; 
      logboek.updateLogboek( logBoekInfo ); 
      schrijfLogBoek.write( logBoekInfo); 
      schrijfLogBoek.newLine(); 
      schrijfLogBoek.close(); 
      
      return; 
    } 
    catch( IOException e ){} 
  } 
}

[ Voor 4% gewijzigd door Verwijderd op 11-04-2004 13:01 ]


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 26-05 00:01

Janoz

Moderator Devschuur®

!litemod

Omn de verandering op je panel daadwerkelijk weer te geven zul je waarschijnlijk nog een update moeten doen om een redraw te triggeren. Probeer je applicatie een s van afmeting te veranderen of te minimaliseren en weer te vergroten. Als de tekst dan wel verschijnt is dat je probleem.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Java:
1
2
3
4
5
6
7
8
9
private void updateComponent(Component component)
{
  component.invalidate();
  component.repaint();

  invalidate();
  validate();
  repaint();
}


Zet dit maar in je code en roep deze op je textarea aan als ie het dan nog niet doet, dan is er iets heel erg mis ;)

Verwijderd

Misschien moet je de constructor van de TextArea eens aanroepen met grotere waarden dan 3,3 . Ik lees nl. dat de constructor er dan een textarea van maak van 3 karakters en 3 regels. Voeg daar de scrollbar aan toe en je ziet niets idd. Verander de tweede drie in een 50 ofzo.

@darcky duck: Als dat de oplossing is dan was er wel iets heel erg mis

[ Voor 12% gewijzigd door Verwijderd op 11-04-2004 18:02 ]

Pagina: 1