Verständnisproblem Action und Listener

melmager

Erfahrenes Mitglied
Also ich habe im Moment massive Verständnisprobleme was Swing betrifft
ich arbeite mit NetBeans und habe nebenbei das Buch "Java ist auch eine Insel" offen

und die drei sachen bekomme ich im Moment nicht auf einen Nenner - mein Hirn, die IDE und das Buch

im Buch ist die Rede von "ActionEvent, die ein angehängter ActionListener meldet"
und in der IDE habe ich unter Eigenschaften Events und die einzige sinnvolle Sache die ich da gefunden habe ist ActionPerformed
das erzeugt mit die Einträge:

Java:
private void jComboMidiActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here: Midi Devices anzeigen
}                                          

private void jButtonMidiPortActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here: update Midi Devicelist in jComboMidi
}

sind das schon die Listener - sprich lande ich in den Functionen wenn ich den Button oder die Auswahlliste anklicke ?

und bei der Combo steht im Buch "getSelectedIndex() Liefert den Index des aktuell selektierten Eintrags."
so erhalte ich also den ausgewählten Eintrag - vermute ich mal ne 3 beim 4. eintrag da ja bei Java Arrays bei 0 anfangen

ich will das bei dem Button die Comboliste neu aufgebaut wird.
da denke ich arbeite ich mit removeItem() bis alle alten einträge weg sind und baue mit addItem( s ); einen neue liste auf
Denkansatz richtig ?
 

genodeftest

Erfahrenes Mitglied
Das sind die Listener. ABER:
- sie dürfen nicht private sein, da von extern darauf zugegriffen wird
- sie müssen so heißen, wie vom jeweiligen Interface des Listeners vorgegeben ist. beim Interface ActionListener heißt die Methode
Java:
public void actionPerformed(ActionEvent e)
Üblicherweise löst man das über sogenannte anonyme Klassen:
Java:
 jButtonMidiPort.addActionListener( new ActionListener() {
    public void actionPerformed( ActionEvent e ) {
      // hier kommt das rein, was du beim Klick ausführen möchtest
    }
  });

// EDIT:
es gibt noch eine andere Möglichkeit:
Du implementierst das Interface ActionListener in einer (beliebigen) Klasse und übergibst eine Instanz dieser Klasse an die Methode
Java:
addActionListener();
 

melmager

Erfahrenes Mitglied
Dat die privat sind ist nicht auf meinem Mist gewachsen - hat wie gesagt die NetBeans IDE so erstellt

ich bin auch schon ein stückchen weiter :)

ich müsste nu nur das Programm dazu bringen beim starten so zu tun als währe der jButton gedrückt worden

so steht erstmal beim Start in der Combobox "Item 1" drin - nach dem Button stehts so wie ich es haben will :)

achja wie bekomme ich es geregelt das ein popup fenster im Fehlerfall angezeigt wird ?
ich hätte da ein paar exeptions die ausgegeben werden sollten ... wenn se denn auftreten
 
Zuletzt bearbeitet:

genodeftest

Erfahrenes Mitglied
Du kannst für jeden Thread und jede ThreadGruppe einen UncaughtExceptionHandler setzten:
Java:
Thread.setUncaughtExceptionHandler(UncaughtExceptionHandler e);
außerdem try-catch-Blöcke benutzen.
Exceptions graphisch ausgeben funktioniert sehr einfach mit JOptionPane.showXXXMessage();

Zu dem mit private: Ja, Netbeans leitet die Events um.
 

Neue Beiträge