[java] textfield vullen met text na button klik

Pagina: 1
Acties:

  • Hu9o
  • Registratie: Mei 2001
  • Laatst online: 14:16

Hu9o

Schokkend

Topicstarter
Java:
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
35
36
37
38
39
40
41
42
import java.awt.*;
import java.applet.*;
import java.awt.event.*;


public class Test extends Applet
{
        
    TextField tf1 = new TextField();
    Button    bt1 = new Button("Test");
        
    public void init()
    {
        setLayout(null);

        bt1.setBounds (10,10,80,25);
        add(bt1);           

        tf1.setBounds (180,10,300,25);
        add(tf1);
        
    }

    public void Knop1() {
    //Connect
        if (tf1.getText ().equals ("")) {
          System.out.println ("Dit werkt wel");
        }
        tf1.setText ("maar dit niet...");
    
    }

    public boolean action (Event f, Object Arg){
      
        Test main = new Test();
        if ( f.target==bt1 ){
          main.Knop1();
        }    
        return true;
     }
                
}



Waarom krijg ik wel "dit werkt wel" te zien in de output, maar niet een text in de textbox??

Het werkt wel als ik de text erin zet in de action 'procedure' maar niet als ik het in een ander doe.

Is het zo dat de andere procedure geen 'recht' heeft om de text te veranderen, maar wel om het uit te lezen :?

Iemand die me kan helpen?

>>>>>>>>>>>>>>>>>>>>>>>>>Vertel Microsoft over dit probleem <<<<<<<<<<<<<<<<<<<<<<<<<


Verwijderd

Java:
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
import java.awt.*;
import java.applet.*;
import java.awt.event.*;


public class Test extends Applet implements ActionListener
{
        
    TextField tf1 = new TextField();
    Button    bt1 = new Button("Test");
           
    public void init()
    {
           setLayout(null);

           bt1.setBounds (10,10,80,25);
           add(bt1);           
           bt1.addActionListener(this);

           tf1.setBounds (180,10,300,25);
           add(tf1);          
    }

    public void actionPerformed(ActionEvent event)
    {
          Object source = event.getSource();

          if(source == bt1)
          {
                 tf1.setText("Dit werkt dus wel");
          }
    }
}


In jouw code voert ie de tf1.setText("blah") niet uit als je op de button klikt omdat je code buiten het if-statement valt :)

public boolean action is een methode van 5 jaar terug ofzo, het werkt wel, maar is dus niet meer "modern".

Deze vraag was trouwens wel erg "basic", je hebt nog mazzel dat niemand is gaan zeiken over je vraag ;-)

Succes ermee

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Je kan trouwens veel beter een actionListener (een luisteraar naar actie op een bepaald component) ook per component afhandelen.

class LeukeApplet extends Applet{
...Button okButton = new Button();
...public void init(){
......okButton.addActionListener(new OkActionListener());
...}

...class OkActionListener implements ActionListener{
......public void actionPerformed(ActionEvent ae){
.........System.out.println("pressed ok button");
......}
...}
}

Dit is een stuk handiger dan achteraf uitzoeken welke knop nou had gedrukt. Je moet dus gewoon voor ieder component waar je naar wilt luisteren een eigen actionListener schrijven.

Je zou eventueel ook kunnen gaan voor Actions (met ingebouwde ActionListeners dus), maar dat gaat denk ik nu even te ver.

  • Hu9o
  • Registratie: Mei 2001
  • Laatst online: 14:16

Hu9o

Schokkend

Topicstarter
Ok bedankt voor de antwoorden.

Dennis zou best kunnen dat het basic is. Ik heb 2,5 jaar geleden iets met java moeten doen. Daar heb ik ff vanaf gekeken, maar daar gebruikte ik geen aparte procedures en dat wou ik nu wel doen.

En waarom zou deze opslot moeten? Dit is toch een gewone vraag. Misschien wel een makkelijke voor de java guru's maar ik ben er toch gistreren ontzettend lang mee bezig geweest, zonder resultaat...... Blij dat GoT bestaat.


Ik gebruik de optie van Alarmnummer, bedankt hiervoor.


edit:
ik wou ook graag weten, waarom ik in de routine Knop1 Wel tf1 kan uitleze, maar er geen tekst in kan zetten.

>>>>>>>>>>>>>>>>>>>>>>>>>Vertel Microsoft over dit probleem <<<<<<<<<<<<<<<<<<<<<<<<<


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Let trouwens ook even op de manier hoe je code schrijft. Als je javacode schrijft, is het goed op de javaconventies te letten, zodat je dus voor iedereen duidelijk is dat het een methode/class/variable is.

1) Classes begin je met een hoofdletter. Dat doe je nu correct
2) methodenamen beginnen met een kleine letter en elk volgend woord begint met een hoofdletter. Dus niet DoSomeCrazyShit, maar doSomeCrazyShit
3) voor variabele namen geldt hetzelfde als methodenamen. Je kunt ervoor kiezen om variabelen van een klasse te prefixen met een _ dan is dat geiljk duidelijk
4) Laat variabelen self describing zijn. Dus gooi niet tf1 neer als naam maar doe iets als _adresVeld.
5) Neem commentaar op in je applicatie. Beschrijf daarin niet letterlijk wat je code is (dus niet : Doorzoekt een array met de arraysortmethode en dan laat ie er methode blaat op los ) maar omschrijf wat de effecten zijn. Verder is het erg netjes om dit dmv javadoc te doen
Java:
1
2
3
4
5
6
7
8
9
10
11
12
/**
  * 
  * The doSomeCrazyShit method takes a random variable
  * from the CrazyShit class and swaps it with an other
  * random variable of the CrazyShit class. It is guaranteed that
  * this variable are not the same variables.
  * @see CrazyShit
  */
public void doSomeCrazyShit( ) {

        // blah
}


Btw waarom uw code niet werkte begrijp ik echt even niet. Na de if zou ie toch echt mooi door moeten gaan (er staat geen else) en de text in het textvak moeten zetten. Op zicht gaat het dus goed, maar waarom het niet op het scherm komt is me een raadsel. Ik kan je er iig niet mee helpen. GUI's zijn niet mijn onderdeel :)