ActionListener bei vielen Modulen

V

vanny

Gast
Ich weiß, ich bin nicht der erste der Fragt, doch haben mir die Suchergebnissen leider nicht wirklich weitergeholfen...
Ich habe meine Gui in mehrere JPanels aufgeteilt, damit ich in Sachen "logische Bedienbarkeit" ne gewisse Struktur reinbekomme. Das hat sich bis jetzt auch ausgezahlt.
Nun stehe ich aber vor dem Problem, dass ich neben dem Paneln, welche für (INT, TEXT, DECIMAL)-werte zuständig sind, auch ein Panel habe, das 3 Buttons enthält {"Suchen","Anlegen","Bearbeiten"}.
Ich möchte im Moment eigentlich nur bewirken, dass ich alle(welche ich Editable(false) initialisiere) mit einem klick auf einen der Buttons editierbar mache, bei "Suchen" und "Anlegen" auch noch die Inhalte löschen.
ich habe mir auch schon in jeder PanelKlasse eine Methode erstellt:
Java:
public void togglePanelxEditable(boolean editierbar){
   for(int i=0;i<pustekuchen;i++){
      tf_x[i].setEditable(editierbar);
   }
}


Nun zum Problem:
Was ich nicht verstehe, wo und wie setze ich nun den ActionListener ein?
Im Moment hab ich Ihn bei dem ButtonPanel, doch da kann ich ja nicht einfach ein Objekt vom JFrame erstellen und ich würde meine Componenten schon gerne private halten.

Ich stehe irgendwie auf dem Schlauch.

im Anhang noch mal ne PDF zum Aufbau des Ganzen.

Gruss und Danke Vanny
 

Anhänge

  • actionlistener.pdf
    74,4 KB · Aufrufe: 9

Marco13

Top Contributor
Ein bißchen mehr Code und eine konkretere Beschreibung wären vielleicht hilfreich. Wenn dort irgendwo ein MVC drinstecken würde, würde sich die Frage vermutlich gar nicht stellen. Eine Möglichkeit, mit den das ganze noch relativ lose gekoppelt bleiben könnte (!), wäre vielleicht GANZ grob (!) sowas wie
Java:
class MainFrame
{
    void init()
    {
        ButtonPanel buttonPanel = new ButtonPanel();
        final TextfieldPanel textFieldPanel = new TextFieldPanel();
        ActionListener actionListener = new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                textFieldPanel.setTheTextFieldStuff();
            }
        });
        buttonPanel.addActionListenerToAllButtons(actionListener);
    }
}

Ggf. könnte auch das TextFieldPanel selbst den ActionListener anbieten, im Sinne von
Code:
buttonPanel.addActionListenerToAllButtons(textFieldPanel.createTheActionListener());

Ggf. könnte man es auch eleganter mit Actions lösen ( How to Use Actions (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Other Swing Features) , die haben ohnehin eine Reihe von Vorteilen... )

Also... so ist's noch schwer zu sagen...
 

André Uhres

Top Contributor
Ich habe meine Gui in mehrere JPanels aufgeteilt, damit ich in Sachen "logische Bedienbarkeit" ne gewisse Struktur reinbekomme.

Hallo Vanny,

ein GUI-Zustandsmodell bezieht sich in der Regel nicht wie anwendungsspezifische Datenmodelle auf die Benutzerdaten und kann daher auch unabhängig davon behandelt werden. Hier ein kleines Beispiel (MVC Design):
Java:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;

public class Main {

    private final StateModel stateModel;

    public Main() {
        MainFrame viewer = new MainFrame(this);
        stateModel = new StateModel();
        stateModel.addObserver(viewer);
        viewer.show();
    }

    public static void main(final String[] args) {
        Runnable gui = new Runnable() {

            public void run() {
                Main main = new Main();
            }
        };
        SwingUtilities.invokeLater(gui);
    }

    public void updateState(final State state) {
        stateModel.setState(state);
    }
}

enum State {

    SEARCH, CREATE, MODIFY
}

class StateModel extends Observable {

    private State state;

    public StateModel() {
    }

    public State getState() {
        return state;
    }

    public void setState(final State state) {
        this.state = state;
        setChanged();
        notifyObservers(this);
    }
}

class MainFrame implements Observer {

    private final JFrame jFrame;
    private final TextPanel textPanel;
    private final Main main;
    private final ButtonPanel buttonPanel;

    public MainFrame(final Main main) {
        this.main = main;
        jFrame = new JFrame();
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        textPanel = new TextPanel();
        jFrame.add(textPanel.getjPanel());
        buttonPanel = new ButtonPanel(main);
        jFrame.add(buttonPanel.getjPanel(), BorderLayout.NORTH);
        jFrame.pack();
    }

    public void show() {
        jFrame.setVisible(true);
    }

    public void update(final Observable o, final Object arg) {
        StateModel state = (StateModel) arg;
        textPanel.updateState(state);
    }
}

class TextPanel {

    private final JPanel jPanel;
    private final JTextField jTextField;

    public TextPanel() {
        jPanel = new JPanel();
        jTextField = new JTextField(10);
        jTextField.setText("Test");
        jPanel.add(jTextField);
    }

    public JPanel getjPanel() {
        return jPanel;
    }

    public void updateState(final StateModel statemodel) {
        State state = statemodel.getState();
        switch (state) {
            case SEARCH:
                jTextField.setEnabled(false);
                jTextField.setText("");
                break;
            case CREATE:
                jTextField.setEnabled(true);
                jTextField.setText("");
                break;
            case MODIFY:
                jTextField.setEnabled(true);
                break;
        }
    }
}

class ButtonPanel {

    private final JPanel jPanel;
    private final JButton jButton;
    private final Main main;

    public ButtonPanel(final Main main) {
        this.main = main;
        jPanel = new JPanel();
        jButton = new JButton();
        jPanel.add(jButton);
        AbstractAction searchAction = new AbstractAction("Suchen") {

            public void actionPerformed(final ActionEvent e) {
                main.updateState(State.SEARCH);
            }
        };
        jButton.setAction(searchAction);
    }

    public JPanel getjPanel() {
        return jPanel;
    }
}

Gruß,
André
 
Zuletzt bearbeitet:
V

vanny

Gast
ok, das wird mich ein paar Tage kosten :p
ich melde mich, sobald ich fast alles verstanden habe und gebe dann ein Feedback ... Danke erstmal bis hierhin

gruss Vanny
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E ActionListener Java Basics - Anfänger-Themen 4
U Eigenschaft eines JTextfiels per ActionListener ändern... Java Basics - Anfänger-Themen 2
U HILFE! - per ActionListener Felder enablen....... Java Basics - Anfänger-Themen 5
C JButton reagiert nicht auf actionListener Java Basics - Anfänger-Themen 15
H Eine Methode über Actionlistener beenden Java Basics - Anfänger-Themen 8
J Array Actionlistener Java Basics - Anfänger-Themen 9
J ActionListener von JCheckBox im Knoten von JTree funktioniert nicht Java Basics - Anfänger-Themen 2
P Erste Schritte ActionListener Java Basics - Anfänger-Themen 2
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
F Habe ein problem mit dem ActionListener Java Basics - Anfänger-Themen 3
J Erste Schritte Actionlistener für tbar/ JButton Java Basics - Anfänger-Themen 15
krgewb ActionListener Java Basics - Anfänger-Themen 1
L Zugriff auf Attribute eins Objekts über ActionListener Java Basics - Anfänger-Themen 4
T Konsolenscanner startet nicht durch Aufruf von Actionlistener Java Basics - Anfänger-Themen 4
F ActionListener mit Files etc Java Basics - Anfänger-Themen 12
N Probleme mit dem ActionListener Java Basics - Anfänger-Themen 4
CptK Auf ActionListener von anderer Klass aus zugreifen Java Basics - Anfänger-Themen 5
F Mehrere Buttons mit einem ActionListener abdecken Java Basics - Anfänger-Themen 24
U ActionListener mit JMenuItems verknüpfen Java Basics - Anfänger-Themen 1
S in ActionListener auf Eingabe aus anderem Frame warten Java Basics - Anfänger-Themen 2
L Problem bei Java-ActionListener Java Basics - Anfänger-Themen 4
J Anfänger: ActionListener und ProcessBuilder machen Probleme Java Basics - Anfänger-Themen 6
D Einen Wert unter einen ActionListener weitergeben Java Basics - Anfänger-Themen 1
T Übernahme einer Variablen im ActionListener/ActionEvent Java Basics - Anfänger-Themen 2
JavaNewbie2.0 ActionListener Java Basics - Anfänger-Themen 11
Voreck Actionlistener problem Java Basics - Anfänger-Themen 1
G Im ActionListener eine "äußere" Variable verändern Java Basics - Anfänger-Themen 13
T Fehler beim ActionListener Java Basics - Anfänger-Themen 2
M public static int in ActionListener Java Basics - Anfänger-Themen 6
S actionlistener timer Java Basics - Anfänger-Themen 9
J Interface ActionListener in eigener Klasse Java Basics - Anfänger-Themen 27
P aus ActionListener auf HauptFrame zugreifen Java Basics - Anfänger-Themen 4
A Klassen Bool Actionlistener Java Basics - Anfänger-Themen 2
K Methoden ActionListener wird übersprungen Java Basics - Anfänger-Themen 3
S actionlistener Java Basics - Anfänger-Themen 29
S ActionListener und Statische Variablen Java Basics - Anfänger-Themen 4
J ActionListener Java Basics - Anfänger-Themen 5
A ActionListener Java Basics - Anfänger-Themen 9
R Problem mit ActionListener für Buttons Java Basics - Anfänger-Themen 5
Z ActionListener wird nicht erkannt? Java Basics - Anfänger-Themen 5
T ActionListener Source vergleichen Java Basics - Anfänger-Themen 8
T Frage zum ActionListener Java Basics - Anfänger-Themen 5
R ActionListener mit for Schleife füllen. Java Basics - Anfänger-Themen 4
K Button's mit versch. Aufgaben/ActionListener Java Basics - Anfänger-Themen 12
S KeyListener/ActionListener/paint()/repaint() Java Basics - Anfänger-Themen 3
I ActionListener reagiert nicht Java Basics - Anfänger-Themen 6
N Probleme mit ActionListener und Logischer Abfrage Java Basics - Anfänger-Themen 4
D Erste Schritte Buttons mit actionlistener Problem Java Basics - Anfänger-Themen 3
S JButton mit ActionListener Java Basics - Anfänger-Themen 5
S ActionListener, Methoden und Variablen Java Basics - Anfänger-Themen 4
X Variablen Actionlistener | Variablen-namen Java Basics - Anfänger-Themen 5
G ActionListener implementieren Java Basics - Anfänger-Themen 12
T Erste Schritte Berechnete Variable im ActionListener zurückführen Java Basics - Anfänger-Themen 6
D Panel sichtbar/unsichtbar machen im ActionListener Java Basics - Anfänger-Themen 3
U JFrame durch ActionListener erweitern Java Basics - Anfänger-Themen 4
M Button , actionlistener Java Basics - Anfänger-Themen 11
P Erste Schritte JTable mit Daten aus Acces DB füllen und Actionlistener einsetzen Java Basics - Anfänger-Themen 29
M Actionlistener Java Basics - Anfänger-Themen 9
D Problem mit ausgelagertem Actionlistener Java Basics - Anfänger-Themen 4
D KeyListener und ActionListener Problem Java Basics - Anfänger-Themen 6
M Klassen Durch den ActionListener das GUI einer anderen Klasse verändern Java Basics - Anfänger-Themen 8
T NullPointerException im ActionListener Java Basics - Anfänger-Themen 3
C Erste Schritte GUI - ActionListener - Exception Nullpointer Java Basics - Anfänger-Themen 5
Kenan89 ActionListener in eigene Klasse Java Basics - Anfänger-Themen 8
E JMenu ActionListener reagiert nicht? Java Basics - Anfänger-Themen 6
V ActionListener in einer for-Schleife Java Basics - Anfänger-Themen 2
S Erste Schritte ActionListener auf Buttons einrichten Java Basics - Anfänger-Themen 3
M Variablen Variable lässt sich durch ActionListener nicht ändern Java Basics - Anfänger-Themen 5
P ActionListener Action Event Java Basics - Anfänger-Themen 5
L ActionListener zerschießt AnchorLayout Java Basics - Anfänger-Themen 8
D ActionListener braucht zwei Klicks auf Button??? Java Basics - Anfänger-Themen 2
M Methoden Timer in ActionListener aufrufen Java Basics - Anfänger-Themen 2
Y Actionlistener passt nicht zu Dataset Java Basics - Anfänger-Themen 6
W Problem mit FileWriter / ActionListener Java Basics - Anfänger-Themen 6
F actionListener Java Basics - Anfänger-Themen 3
T ActionListener auslagern Java Basics - Anfänger-Themen 14
S Actionlistener funktionieren nicht in der .jar Java Basics - Anfänger-Themen 9
E ActionListener abwarten lassen? Java Basics - Anfänger-Themen 11
E ActionListener in anderer Klasse erkennen Java Basics - Anfänger-Themen 13
H ActionListener Verbesserung möglich? (This) Java Basics - Anfänger-Themen 3
E ActionListener erkennt instanz nicht Java Basics - Anfänger-Themen 9
J ActionListener Java Basics - Anfänger-Themen 2
T JLabel durch ActionListener ändern Java Basics - Anfänger-Themen 4
S ActionListener Java Basics - Anfänger-Themen 4
U actionListener - eine Kleine Frage Java Basics - Anfänger-Themen 7
K Actionlistener Java Basics - Anfänger-Themen 7
M ActionListener außerhalb des EDT ausführen Java Basics - Anfänger-Themen 2
A ActionListener im JMenu - Problem Java Basics - Anfänger-Themen 2
M ActionListener reagiert nicht Java Basics - Anfänger-Themen 4
N ActionListener + GUI Java Basics - Anfänger-Themen 8
H Bewegtes Bild im ActionListener [Problem] Java Basics - Anfänger-Themen 12
D Liste+ActionListener Java Basics - Anfänger-Themen 6
L wie Jframe an ActionListener übergeben Java Basics - Anfänger-Themen 4
U ActionListener und KeyListener - KeyListener funktioniert nicht Java Basics - Anfänger-Themen 2
A JButton ActionListener nach einmaligem Ausführen zurücksetzen Java Basics - Anfänger-Themen 13
Luk10 Problem mit ActionListener Java Basics - Anfänger-Themen 6
R Viereck zeichnen über TextField-Eingabe /ActionListener Java Basics - Anfänger-Themen 9
C ActionListener problem beim starten von programmen Java Basics - Anfänger-Themen 3
C ActionListener problem Java Basics - Anfänger-Themen 4
L Tray-Einträge und dazu passende ActionListener dynamisch erzeugen? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben