[ jurik @ 25.11.2010. 00:03 ] @
Imam klasu AppFrame u kojoj mi se nalazi metoda koja mi pravi JTextFieldove, kao parametar prima naziv i listener. Takođe se nalazi i metoda za dodavanje JButtona koja prima naziv i listenera.

Code:

    public void initGUI() {
        panel = new JPanel();
        GridLayout gridLejout = new GridLayout(0,2);
        setLayout(gridLejout);
        
        ActionListener field_listener = new FieldAction();
        ActionListener dugme_listener = new ButtonAction();
        
        addField("polje1", field_listener);
        addButton("Dodaj", dugme_listener);
        
        add(panel, BorderLayout.CENTER);
    }
    
    private void addField(String ime, ActionListener listener) {
        JTextField field = new JTextField(ime, 15);
        field.addActionListener(listener);
        panel.add(field);
    }
    
    private void addButton(String ime, ActionListener listener) {
        JButton dugme = new JButton(ime);
        dugme.addActionListener(listener);
        panel.add(dugme);
    }


Listeneri
ActionListener field_listener = new FieldAction();
ActionListener dugme_listener = new ButtonAction();
izgledaju ovako

Code:

package actions;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class FieldAction implements ActionListener {
    private String fieldContent;
    
    @Override
    public void actionPerformed(ActionEvent event) {
        fieldContent = event.getActionCommand();
        
    }
    
}


Kako da imam sadrzaj tekstFildova(fieldContent) u klasi koja slusa button:
Code:

package actions;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class ButtonAction implements ActionListener{
    
    @Override
    public void actionPerformed(ActionEvent e) {

    }
}





[ iMac @ 25.11.2010. 01:29 ] @
Cao.

Kao prvo, licno mi se ne svidja kako si ovo osmislio ali ako bih morao da razmisljam kao ti, kroz button listener bih prosledio referencu na text field. Dakle
Code:

package actions;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class ButtonAction implements ActionListener{



    private JTextField textComponent;

    public ButtonAction(JTextField textComponent)
    {
         this.textComponent = textComponent;
    }

    
    @Override
    public void actionPerformed(ActionEvent e) {
         //odradi sta vec treba sa text component-om
    }
}






Moram da priznam da ovo tvoje resenje izgleda bas ruzno. Prvo, pokusaj da, ako vec pravis kod za svoju dusu(posto mi ovo izgleda kao neka vezba), pokusaj da ga pravis tako da on "prica" sam za sebe. Dakle, nemoj tu da stavljas neke metode koje rade vise od jedne stvari a "govori" samo o jednoj. samo jedna banalna stvar: neka imena promenljivih pises srpskih, druge engleskim, itd, itd. Sve u svemu, ne svidja mi se ovo sto si napisao. metoda initGui radi vise od toga. Probaj da takve stvari odvajas, lakse ce ti kasnije biti ako budes radio na nekom znacajnijem projektu.
[ jurik @ 25.11.2010. 01:49 ] @
Ou jes, skapirao sam te koja je ideja,
nego
jos jedno slicno pitanje,

Kada prosledim listener nekom tekst fildu, a taj listener je u drugoj klasi, kako da pokupim tekst iz njega? NPR
Code:

Listener l = new Listener();
fild1 = new JTextField(15);
fild1.addActionListener(l);



Klasa Listener
Code:

public class Listener implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent e) {
        //kako ovde sada da pristupim fild1.getTekst ?
        }
}


[ iMac @ 25.11.2010. 02:03 ] @
Opet dajem isti odgovor, sto znaci da i nisi bas skapirao. :D

Listener l = new Listener(textField);

pa unutar metode actionPerformed zoves textField.getText()


Ponavljam, nije ovo tvoje srecno resenje al dobro, zavrsi ga ovako.

pozz
[ NeoDesign @ 26.11.2010. 18:49 ] @
mozes da pokupis i komponentu koja je izvor (source) dogadjaja iz ActionEvent-a. Na ovaj nacin ne moras ni da prosledjujes JTextField ...

Code:

    @Override
    public void actionPerformed(ActionEvent e) {
         JTextField polje = (JTextField)e.getSource();
         String text = polje.getText();
    }