[SOLVED]Swing Event Management

Status
Nicht offen für weitere Antworten.

metalfan

Aktives Mitglied
Mein kleines Swing Programm soll den Inhalt eines JTextFields ausgeben wenn der button1 gedrückt wird...
Bin mir allerdings nicht ganz sicher wie ich das in der Methode actionPerformed realisiere.
Dachte erst an textfield1.event.getActionCommand(); (benutze die methode getAction... auf die instanz textfield1...allerdings kennt er dann textfield nicht :()
Hat jemand eine Idee?

Code:
import java.awt.event.*;
import javax.swing.*;

class MainFrameCommand implements ActionListener
{
	int n=0;
	public void actionPerformed(ActionEvent event)
    {
    	/*
    	String cmd = event.getActionCommand();
    	if (cmd.equals("Button1")) 
    	{
    		System.out.print("Klick:"+n+"\n");
    		n++;
    	}
    	if (cmd.equals("Button1"))
    	*/
    	
		Object obj = event.getSource();
    	if (obj instanceof JTextField) 
    	{
    			System.out.println("Textfield,enter,"+n+": "+event.getActionCommand());
    			n++;
    	} 
    	else if (obj instanceof JButton) 
    	{
    		/*
    		if (event.getActionCommand().equals("Suchen")) 
    		{
    			System.out.println("bla\n");
    		}
    		*/
    		System.out.println("Button gedrückt\n");
    		//textfield1.event.getActionCommand();  //<--------------------------------------------------------------
    	}
    	else
    	{
    		
    	}
    }
}


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

//class MainFrameGUI extends JFrame implements ActionListener
class MainFrameGUI extends JFrame
{
    public MainFrameGUI(ActionListener cmd)
    {
        super("Nachrichtentransfer");

        //Instanz der Klasse WindowClosingAdapter erzeugen um den X Button zu belegen
        addWindowListener(new WindowClosingAdapter(true));

        //setBackground(Color.lightGray);
        setSize(300,200);
        setLocation(200,100);
        //setVisible(true);

        //Panel erzeugen
        JPanel namePanel = new JPanel(); //Panel erzeugen
        
        //Button kram
        JButton button1 = new JButton("Button1"); //Button erzeugen
        button1.addActionListener(cmd);
        namePanel.add(button1); //Button zum Panel hinzufügen(Layout: FlowLayout?)
        
        //Textfield hinzufügen
        JTextField textfield1 = new JTextField(15);
        namePanel.add(textfield1);
        textfield1.addActionListener(cmd);
        
        //Panel mit BorderLayout dem JFrame position CENTER hinzufügen
        getContentPane().add(namePanel, BorderLayout.CENTER);
        setVisible(true);
    }
    


    //public void paint(Graphics g)
    //{
    //}
}


public class Listing2805
{
    public static void main(String[] args)
    {
        MainFrameCommand cmd = new MainFrameCommand();
        MainFrameGUI     gui = new MainFrameGUI(cmd);
    }
}

Julius
 

André Uhres

Top Contributor
Code:
...
class MainFrameGUI extends JFrame {
    public MainFrameGUI() {
...
        //Button kram
        button1 = new JButton("Button1"); //Button erzeugen
//        button1.addActionListener(cmd); 
        namePanel.add(button1); //Button zum Panel hinzufügen(Layout: FlowLayout?)
        
        //Textfield hinzufügen
        textfield1 = new JTextField(15);
        namePanel.add(textfield1); 
//        textfield1.addActionListener(cmd); 
     
        MainFrameCommand cmd = new MainFrameCommand();
        button1.addActionListener(cmd);
        textfield1.addActionListener(cmd);
...
    }
    private JButton button1;
    private JTextField textfield1;
    class MainFrameCommand implements ActionListener {
        int n=0;
        public void actionPerformed(ActionEvent event) {
       /*
       String cmd = event.getActionCommand();
       if (cmd.equals("Button1"))
       {
          System.out.print("Klick:"+n+"\n");
          n++;
       }
       if (cmd.equals("Button1"))
        */
            
            Object obj = event.getSource();
            if (obj instanceof JTextField) {
                System.out.println("Textfield,enter,"+n+": "+event.getActionCommand());
                n++;
            } else if (obj instanceof JButton) {
          /*
          if (event.getActionCommand().equals("Suchen"))
          {
             System.out.println("bla\n");
          }
           */
                System.out.println("Button gedrückt\n");
                System.out.println("'"+textfield1.getText()+"'");
            } else {
                
            }
        }
    }
    
    
    
    
    //public void paint(Graphics g)
    //{
    //}
}


public class Listing2805 {
    public static void main(String[] args) {
        MainFrameGUI     gui = new MainFrameGUI();
    }
}
 

metalfan

Aktives Mitglied
Hab die Änderungen übernommen, ein Klick auf den Button endet allerdings mit:

java.lang.NullPointerException
at MainFrameCommand.actionPerformed(MainFrameCommand.java:36)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245)
at java.awt.Component.processMouseEvent(Component.java:5100)
at java.awt.Component.processEvent(Component.java:4897)
at java.awt.Container.processEvent(Container.java:1569)
at java.awt.Component.dispatchEventImpl(Component.java:3615)
at java.awt.Container.dispatchEventImpl(Container.java:1627)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
at java.awt.Container.dispatchEventImpl(Container.java:1613)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:480)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)

Code:
public class Listing2805
{
    public static void main(String[] args)
    {
        MainFrameGUI     gui = new MainFrameGUI();
    }
}




import java.awt.event.*;
import javax.swing.*;

class MainFrameCommand implements ActionListener
{
	private JButton button1;
	private JTextField textfield1;
	int n=0;
	public void actionPerformed(ActionEvent event)
    {
		Object obj = event.getSource();
    	if (obj instanceof JTextField) 
    	{
    		System.out.println("Textfield,enter,"+n+": "+event.getActionCommand());
    		n++;
    	} 
    	else if (obj instanceof JButton) 
    	{
    		System.out.println("'"+textfield1.getText()+"'"); 
    	}
    }
}



import java.awt.*;
//import java.awt.event.*;
import javax.swing.*;

//class MainFrameGUI extends JFrame implements ActionListener
class MainFrameGUI extends JFrame
{
    public MainFrameGUI()
    {
        super("Nachrichtentransfer");

        //Instanz der Klasse WindowClosingAdapter erzeugen um den X Button zu belegen
        addWindowListener(new WindowClosingAdapter(true));

        //setBackground(Color.lightGray);
        setSize(300,200);
        setLocation(200,100);
        //setVisible(true);

        //Panel erzeugen
        JPanel namePanel = new JPanel(); //Panel erzeugen
        
        //Button kram
        JButton button1 = new JButton("Button1"); //Button erzeugen
        namePanel.add(button1); //Button zum Panel hinzufügen(Layout: FlowLayout?)
        
        //Textfield hinzufügen
        JTextField textfield1 = new JTextField(15);
        namePanel.add(textfield1);
    
        MainFrameCommand cmd = new MainFrameCommand();
        button1.addActionListener(cmd);
        textfield1.addActionListener(cmd); 
        
        //Panel mit BorderLayout dem JFrame position CENTER hinzufügen
        getContentPane().add(namePanel, BorderLayout.CENTER);
        setVisible(true);
    }
    
    //public void paint(Graphics g)
    //{
    //}
}

Hoffe das ich keine Änderungen übersehen habe...
Julius
 

André Uhres

Top Contributor
Eine Änderung haste jedenfalls übersehen:
MainFrameCommand wird innerhalb MainFrameGUI angelegt:
Code:
/*
 * Listing2805
 */
package schnipsel;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
public class Listing2805 {
    public static void main(String[] args) {
        MainFrameGUI     gui = new MainFrameGUI();
    }
}
class MainFrameGUI extends JFrame {
    public MainFrameGUI() {
        super("Nachrichtentransfer");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setSize(300,200);
        setLocation(200,100);
        //Panel erzeugen
        JPanel namePanel = new JPanel(); //Panel erzeugen
        //Button kram
        button1 = new JButton("Button1"); //Button erzeugen
        namePanel.add(button1); //Button zum Panel hinzufügen(Layout: FlowLayout?)
        //Textfield hinzufügen
        textfield1 = new JTextField(15);
        namePanel.add(textfield1);
        
        MainFrameCommand cmd = new MainFrameCommand();
        button1.addActionListener(cmd);
        textfield1.addActionListener(cmd);
        //Panel mit BorderLayout dem JFrame position CENTER hinzufügen
        getContentPane().add(namePanel, BorderLayout.CENTER);
        setVisible(true);
    }
    private JButton button1;
    private JTextField textfield1;
    class MainFrameCommand implements ActionListener {
        int n=0;
        public void actionPerformed(ActionEvent event) {
            Object obj = event.getSource();
            if (obj instanceof JTextField) {
                System.out.println("Textfield,enter,"+n+": "+event.getActionCommand());
                n++;
            } else if (obj instanceof JButton) {
                System.out.println("Button gedrückt\n");
                System.out.println("'"+textfield1.getText()+"'");
            } else {
                assert false : "actionPerformed: invalid action";                
            }
        }
    }
}
 

metalfan

Aktives Mitglied
Hm, steht nicht in meinem code schon das MainFrameCommand innerhalb der Klasse MainFrameGUI angelegt wird?

Code:
    private JButton button1;
    private JTextField textfield1;
Die beiden liegen bei dir in der Klasse MainFrameGUI, hatte sie in die Klasse MainFrameCommand gesetzt da dann eclipse textfield1 erkannt hat, liegen sie in der Klasse MainFrameGUI scheitert das kompilieren.

Dann ist mir noch diese Änderung aufgefallen:
Code:
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Meine WindowClosingAdapter Klasse kann zwar auch nicht mehr aber das Programm sollte laufen, oder?

Julius
 

André Uhres

Top Contributor
Mit innerhalb meine ich nicht so:
Code:
class MainFrameCommand implements ActionListener 
{ 
} 
class MainFrameGUI extends JFrame 
{ 
}
Sondern so (innere Klasse):
Code:
class MainFrameGUI extends JFrame 
{ 
   class MainFrameCommand implements ActionListener 
   { 
   } 
}
WindowClosingAdapter ist OK.
Hab das nur durch standard java ersetzt weil ich die Klasse nicht hatte.
 

metalfan

Aktives Mitglied
Getrennt waren die Klassen ursprünglich um Event/Gui Code in seperaten Klassen zu haben. Werd mich nochmal um den OO part kümmern und schaun ob man das realisieren kann.

Julius
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Mr.Isaaaac [SOLVED] System Tray Popup MenüItem mit Icon? Java Basics - Anfänger-Themen 7
B [ Solved ]Unix Commando ausfuehren Java Basics - Anfänger-Themen 8
T [SOLVED] Java String equals funktioniert nicht Java Basics - Anfänger-Themen 5
W [Solved] String in Datum umwandeln Java Basics - Anfänger-Themen 5
M [SOLVED]update() bei MVC Java Basics - Anfänger-Themen 4
M [SOLVED]JComboBoxen dynamisch erstellen und abfragen Java Basics - Anfänger-Themen 2
M [SOLVED]private Daten head - neues objekt? Java Basics - Anfänger-Themen 12
M [SOLVED]parameter übergabe an objekte Java Basics - Anfänger-Themen 2
G eine Knoten aus einem Baum löschen. [SOLVED] Java Basics - Anfänger-Themen 7
J SWING UI Designer und zeichnen Java Basics - Anfänger-Themen 4
G Maven Swing: Wie verwende ich WindowListener ? Java Basics - Anfänger-Themen 2
C Threads und Swing Java Basics - Anfänger-Themen 9
A Swing: Raumshiff Java Basics - Anfänger-Themen 3
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
nbergmann Wo ist javax.swing.JOptionPane gespeichert? Java Basics - Anfänger-Themen 4
StevenGG Java swing "New Integer" Java Basics - Anfänger-Themen 5
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
O ImageIcon, Swing Java Basics - Anfänger-Themen 1
O Swing JPanel Java Basics - Anfänger-Themen 4
F Swing - Fehler - Paint Methode Java Basics - Anfänger-Themen 7
M Input/Output Java Swing: Prüft ob Text aus JTextField ausschließlich Integer enthält Java Basics - Anfänger-Themen 15
mobaer Swing Timer stoppen Java Basics - Anfänger-Themen 3
M Wie kann ich hier ein Textfeld hinzufügen Java Swing? Java Basics - Anfänger-Themen 1
M SpielMenü mit Swing Java Basics - Anfänger-Themen 3
M Wie kann ich eine Eingabe im Java-Swing übergeben? Java Basics - Anfänger-Themen 1
N javax swing JOptionPane Hilfe Java Basics - Anfänger-Themen 3
H Swing Button hat falsche Größe Java Basics - Anfänger-Themen 5
C Der Swing Layout-Manager hasst mich Java Basics - Anfänger-Themen 4
M Java swing im Browser starten Java Basics - Anfänger-Themen 0
M JavaFX in Swing-Applikationen einbetten Java Basics - Anfänger-Themen 5
Z Threads SWING mit EventQueue.invokeLater Java Basics - Anfänger-Themen 1
P JDK installieren javac behauptet Javax.swing existiert nicht Java Basics - Anfänger-Themen 8
K Ascii Converter mit Swing Java Basics - Anfänger-Themen 4
b1ck Interface Verständnisfrage zum GUI mit "swing" Java Basics - Anfänger-Themen 1
N Erste Schritte Karte in SWING Application Java Basics - Anfänger-Themen 4
D Mehrfacherfassung in Swing GUI Java Basics - Anfänger-Themen 12
D Datum aus Swing in MySQL DB speichern Java Basics - Anfänger-Themen 22
R warum kann System.out.println(..) etwas, was Swing-Elemente Nicht können ? Java Basics - Anfänger-Themen 11
J Input/Output Charset Swing- Eingaben? Java Basics - Anfänger-Themen 8
S JUnit - Swing- Anwendung wird nicht neu gestartet Java Basics - Anfänger-Themen 0
Q Threads Threads in Swing Anwendungen Java Basics - Anfänger-Themen 5
B Swing intstalliert Eclips{}, mackiert Rot Java Basics - Anfänger-Themen 6
U Java Swing Timer mit ButtonKlick starten u. nach 12 Sekunden Befehl ausführen Java Basics - Anfänger-Themen 7
S Input/Output In Java Swing auf Button warten? Java Basics - Anfänger-Themen 9
N Problem mit Swing Textfeld und Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 6
G Performance - höhere Anzahl Swing Elemente Java Basics - Anfänger-Themen 5
B Java Swing "Zeichenfläche" Java Basics - Anfänger-Themen 1
O Alternative zum swing-Timer Java Basics - Anfänger-Themen 5
F Swing Applet: mehrere Komponenten hinzufügen Java Basics - Anfänger-Themen 1
F Platzieren von Komponenten in Swing Applet funktioniert nicht Java Basics - Anfänger-Themen 3
P Hintergrundbild in Swing einfügen Java Basics - Anfänger-Themen 3
C Swing frage Java Basics - Anfänger-Themen 8
T Rechenprogramm mit Swing Java Basics - Anfänger-Themen 3
K Swing Darstellungsproblem Java Basics - Anfänger-Themen 11
G Verständnisproblem mit swing Java Basics - Anfänger-Themen 6
P Swing - Blackscreen Java Basics - Anfänger-Themen 10
Y Random-Objekt und Swing Java Basics - Anfänger-Themen 4
M Klassen Hilfe bei SWING Java Basics - Anfänger-Themen 5
S GUI Problem: Swing Java Basics - Anfänger-Themen 8
M Javax.swing - Timer(2 Button) Java Basics - Anfänger-Themen 17
J Timer - Swing Java Basics - Anfänger-Themen 5
B Erste Schritte Primefaces -> Swing Gui Java Basics - Anfänger-Themen 7
T Swing, SWT oder JavaFX Java Basics - Anfänger-Themen 8
S Programmoberfläche mit Java-Swing - Herangehensweise Java Basics - Anfänger-Themen 20
E Fragen zu paintXXX in Swing Java Basics - Anfänger-Themen 7
D Erste Schritte bash-Befehl mit Swing ausführen Java Basics - Anfänger-Themen 8
A Alternative zum manuellen Swing programmieren?? Java Basics - Anfänger-Themen 4
S Android fuer Swing-Kenner..? Java Basics - Anfänger-Themen 6
J Swing Timer Java Basics - Anfänger-Themen 3
B Seltsamer Fehler in SWING anwendung Java Basics - Anfänger-Themen 2
D GPS Tracker Swing Java Basics - Anfänger-Themen 2
L Erste Schritte Swing oder SWT Paint mit Grafikkarte? Java Basics - Anfänger-Themen 7
B Einstieg in swing GUI Java Basics - Anfänger-Themen 7
S Swing Eingabe Erzwingen Java Basics - Anfänger-Themen 3
S Swing JTable Java Basics - Anfänger-Themen 7
Z Input/Output Programm mit Swing umsetzen Java Basics - Anfänger-Themen 6
K Eclipse wie Swing per Drag und Drop erstellen Java Basics - Anfänger-Themen 2
V Dropdown Button in einer GUI (Java Swing) Java Basics - Anfänger-Themen 12
S Swing, Gridbaglayout Panel in Panel;funzt nicht!! Java Basics - Anfänger-Themen 3
O swing komponenten werden nicht angezeigt Java Basics - Anfänger-Themen 6
S Swing, Panel über Hintergrundbild!! Java Basics - Anfänger-Themen 6
P Im Fenster bleiben (swing) Java Basics - Anfänger-Themen 16
M Einfacher Swing Wizard Java Basics - Anfänger-Themen 3
E Swing FileWrite?? Java Basics - Anfänger-Themen 3
S Umlaute in Swing-GUI Java Basics - Anfänger-Themen 8
K Drop-down Menü (swing) Java Basics - Anfänger-Themen 4
M Timer-Thread in Swing öffnet jedes Mal ein neues Fenster Java Basics - Anfänger-Themen 6
M Swing Klasse auch per Kommandozeile starten? Java Basics - Anfänger-Themen 2
S JAVA Swing Eventlistener Java Basics - Anfänger-Themen 11
P Swing - Welche Klasse für ausgeben von Ergebnissen? Java Basics - Anfänger-Themen 3
V Swing Componenten werden auf Mac nicht angezeigt Java Basics - Anfänger-Themen 19
J Überfordert mit Swing Java Basics - Anfänger-Themen 5
B Baum > Baum-Swing Java Basics - Anfänger-Themen 4
B Bei Swing weg vom North-West-South-East-Prinzip Java Basics - Anfänger-Themen 2
K Swing Fenster jede sec.neuzeichnen Java Basics - Anfänger-Themen 14
F Werteübergabe in Swing Formularen (gui Builder) Java Basics - Anfänger-Themen 9
L Swing GridBagLayout Java Basics - Anfänger-Themen 3
K Bild als Hintergrund in einem Swing Fenster Java Basics - Anfänger-Themen 21
J unterschied zwischen awt und swing Java Basics - Anfänger-Themen 6
C Swing i.V.m. Threads Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben