Events in Java



  • Hi

    Ich habe eine Klasse die Daten über das Netz verschickt und empfängt nun will ich die Klasse in meine GUI einbinden leider weis ich nicht wie die Kommunikation zwischen meiner Klasse und der GUI laufen soll.

    In c# hab ich das Problem einfach gelöst indem ich ein Event zur Klasse hinzugefügt habe und dieses wird bei Notwendigkeit gefeuert z. B wenn Daten ankommen.

    Meine frage ist ob es in Java eine humane Möglichkeit gibt ein Event zu feuern, in c# ist es ja sehr einfach nicht viel mehr als ein paar Zeilen Code.
    In Java jedoch schein es nicht so einfach zu sein.

    Ich hoffe einer kann mir helfen sitze schon länger an dem Problem

    Mit freundlichen Grüßen Papa Smurf



  • Also ich leite mir dann immer meine GUI von JFRame ab und implementiere das Interface ActionListener.

    public class MyGUI extends JFrame implements JFrame {
    private JButton button1;
    private JTextField tf;
    private String text;
    public MyGUI() {
    button1 = new JButton("Klick mich");
    button1.addActionListener(this);
    tf = new JTextField();
    //todo
    }
    public void actionPerformed(ActionEvent evt) {
    Object sourc = evt.getSource();
    if(source == button1) {
    text = tf.getText();
    //todo
    }
    //todo
    }
    }

    In actionPerformed kommt dann sozusagen das ganze Ereignisbehandlugszeug. 🙂

    edit: In den Konstruktor noch solche Sachen wie LyoutManager und setVisible() machen, und dann brauchst du in der main() nur noch eine Instanz von MyGUI erzeugen und fertig!



  • Hi

    Leider gibt es in meiner Klasse die Funktion „addActionListener“ nicht die Klasse ist sehr einfach besteht lediglich aus einem Socket Objekt, InputStream, OutputStream, und 3 Funktionen Connect, Read und Write.
    Diese Funktionen laufen in einem anderen Thread da sonst ja die Anwendung blockieren würde.
    So wenn ich nun aus einem Formular meine Klasse die Funktion Read ausführen lasse empfängt sie ja irgendwann Daten und genau dann wenn die Daten ankommen soll eine Funktion ausgeführt werden die zum Formular gehört.

    Wie gesagt „addActionListener“ hab ich nicht muss ich dafür meine Klasse von einem Objekt ableiten das diese zur Verfügung stellt?

    Mit freundlichen Grüßen Papa Smurf



  • Adds the specified action listener to receive action events from this button. Action events occur when a user presses or releases the mouse over this button. If l is null, no exception is thrown and no action is performed.

    Aus der Java API Spezifikation. Dafür musst du nicht von einem Objekt ableiten. JButton zB stellt diese Methode zur Verfügung und entsprechend auch andere Elemente, die einen Event auslösen können (hoffe, dass ist so richtig formuliert).


Anmelden zum Antworten