Toon posts:

Java: waarde van jTextField opvragen uit andere klasse

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb 2 klassen, nl. inputView en inputController (MVC gedoe...)

In inputView heb ik
code:
1
2
3
JTextField invulField = new JTextField("",3);
....
invulField.addActionListener(inputController);


In inputController heb ik
code:
1
2
3
4
5
6
7
8
9
public void actionPerformed(ActionEvent event) {
        String command = event.getActionCommand();
        if (command == "enter") {
            
            String text = inputView.invulField.getText();
            
        }
                
}

De bedoeling is dus dat, na het indrukken van de enter-button de controller klasse de waarde van invulField uitleest (en verwerkt). Dit werkt niet. Hoe kan ik de waarde opvragen van een textField uit een andere klasse.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 13-02 11:06

Janoz

Moderator Devschuur®

!litemod

Je zult er voor moeten zorgen dat inputController invulField kent. Hoe weet hij anders immers welke hij moet nemen? De meest basale manier is om in je inputControler ook een variabele bij te houden. Bij het initieren van inputController ken je hieraan invulField toe.

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


  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 02-01 15:55
Ik denk dat je je toch even meer zal moeten verdiepen in JAVA, dit is echt basiskennis...
Zeker als je aan de gang wil met dat 'MVC gedoe', zal je er toch echt iets meer voor moeten doen om er een mooie applicatie van te maken.

If I can't fix it, it ain't broken.


Verwijderd

Tja, basic kennis.

Verdiep je eens in wat artikelen over: Observer-pattern, Java's implementatie van dat pattern en koop een Java boek :)

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 14-02 17:55

Robtimus

me Robtimus no like you

Janoz schreef op maandag 11 september 2006 @ 19:35:
Je zult er voor moeten zorgen dat inputController invulField kent. Hoe weet hij anders immers welke hij moet nemen? De meest basale manier is om in je inputControler ook een variabele bij te houden. Bij het initieren van inputController ken je hieraan invulField toe.
Niet noodzakelijk.
ActionEvent (en alle andere subclasses van EventObject) heeft een method genaamd getSource(). Dit geeft het component (van type Object...) terug dat het event heeft getriggerd. In dit geval dus je text field.

Let er alleen wel op dat je, tenzij je 100% zeker weet dat je ActionListener niet door andere components wordt gebruikt, wel even controleert of je wel het goede component hebt. Dat is ook de reden dat ik heel vaak elk component zijn eigen (anonymous) event listeners geef.

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


  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 19:25
De enige reden waarom jouw code uit de TS niet werkt is omdat je een String vergelijking uitvoert met de == operator en dat gaat niet werken :)
Even aangenomen dat je ook setActionCommand() hebt aangroepen op je inputField en de juiste String waarde hebt meegegeven...

[ Voor 59% gewijzigd door Kwistnix op 11-09-2006 22:13 ]


  • Access
  • Registratie: Juni 2001
  • Laatst online: 00:29
Ik zou de methode actionPerformed in de klasse InputController op de volgende manier invullen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public void actionPerformed(ActionEvent event) {
    // haal het source object op
    Object source = event.getSource();

    // controleer of het om een JTextField gaat
    if(source instanceof JTextField) {
        // cast het source object naar JTextField
        JTextField textField = (JTextField) source;

        if (textField.getActionCommand().equalsIgnoreCase("enter")) {
            String text = inputView.invulField.getText();
        }
    }
}


@momania
Dat in de code samples van de topic starter nergens een eigen model terug te vinden is hoeft nog niet te betekenen dat er geen aanwezig is. Wie weet wordt het model wel in code aangesproken die niet in de voorbeelden staan. Tevens werkt een JTextField ook gewoon volgens het MVC pattern.

[ Voor 20% gewijzigd door Access op 11-09-2006 22:42 ]


  • momania
  • Registratie: Mei 2000
  • Laatst online: 23:22

momania

iPhone 30! Bam!

Het is MVC... ;)
De TS gebruikt nu alleen maar VC, er mist gewoon een model in het geheel.

Even zoeken naar 'java mvc' op google en je komt zat voorbeelden tegen.

Neem je whisky mee, is het te weinig... *zucht*


  • Bl4ckviper
  • Registratie: Mei 2002
  • Laatst online: 09-02 23:48

Bl4ckviper

BlaBlaBla

momania schreef op maandag 11 september 2006 @ 22:37:
Het is MVC... ;)
De TS gebruikt nu alleen maar VC, er mist gewoon een model in het geheel.

Even zoeken naar 'java mvc' op google en je komt zat voorbeelden tegen.
Model gedeelte kan die later doen ;) stoppen in de DB ofzo

Be fast .... Be furious....

Pagina: 1