GUI Aktualisierung aus/und eventListener

butti

Neues Mitglied
Hallo zusammen,

Als erstes möchte ich anmerken, dass ich noch ein totaler Anfänger bin.

Um mich besser mit der Materie vertraut zu machen, habe ich trotzdem mit einem kleinen Programm begonnen(Hier in gekürzter Form).

Kurz beschrieben habe ich das Problem, dass ich aus einem eventListener zb die Farbe eines Buttons ändern kann, oder aber den text in der jtextarea1 setzen kann......

Java:
class jbutton1Listener implements ActionListener {
    	public void actionPerformed(ActionEvent event) {
    		
                setJtextarea1("Item rechner01 clicked: ");
    		    jbutton1.setBackground(Color.blue);

    	}
    }


aus einem anderen eventListener funktioniert dies aber nicht ?!

Java:
class StartPingListener implements ActionListener {
    	public void actionPerformed(ActionEvent event) {
    		
                setJtextarea1("startMyPing clicked: ");
    		    jbutton1.setBackground(Color.blue);
  	      	
    		//startMyPing();	
    	}
    }

Ich bin mir bewusst, dass dort wahrscheinlich auch sonst so einige Schnitzer drin sind und für alle Kommentare offen.

Programm:
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.*;
import java.net.InetAddress;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JButton;

import com.jgoodies.forms.builder.PanelBuilder;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;
import javax.swing.JScrollPane;


public class PanelB1 extends JPanel {
    
	private JFrame f;
	private PanelBuilder builder;
	JTextArea jtextarea1;

	JButton jbutton1;
	JButton jbutton2;
	JButton jbutton3;
	
	Thread t1;

	
	public PanelB1() {
        super(new BorderLayout());
      	
        jbutton1 = new JButton("rechner01");
        jbutton1.addActionListener(new jbutton1Listener());
        
        jbutton2 = new JButton("rechner08");
        jbutton2.addActionListener(new jbutton2Listener());

        jbutton3 = new JButton("rechner8135");
        jbutton3.addActionListener(new jbutton3Listener());


        
        jtextarea1 = new JTextArea();

        JScrollPane jscrollpane1 = new JScrollPane();
        jscrollpane1.setViewportView(jtextarea1);
        
        FormLayout layout = new FormLayout(
        		"right:pref, pref, left:pref:grow", 	// columns (Spalten)
        		"1dlu,pref,2dlu,pref,2dlu,pref,2dlu,2dlu,2dlu,[250dlu,min],2dlu"); 	// rows (Zeilen)
        		
        		builder = new PanelBuilder(layout);
        		builder.setDefaultDialogBorder();
        		CellConstraints cc = new CellConstraints();
        		
        		// builder.addSeparator("", cc.xyw(1, 1, 7));
        		
        		builder.add(jbutton1, cc.xy (2, 2));
        		builder.add(jbutton2, cc.xy (2, 4));
        		builder.add(jbutton3, cc.xy (2, 6));

        		builder.addSeparator("",cc.xyw (2, 8,2));
        		builder.add(jscrollpane1, cc.xywh (2,10,2,2));        		
        		
        		
        		jtextarea1.setSize(200, 200);

        		add(builder.getPanel());
	}
        
    public void go() {    
        		f = new JFrame("FormLayout Test");
        		f.setDefaultCloseOperation(2);
        		JMenuBar menuBar1;
        		JMenu menu1, menu2;
        		JMenuItem menuItem;
        	    menuBar1 = new JMenuBar();
        		
        		
        	    // Menu 1 (FILE)
        		menu1 = new JMenu("FILE");
        		menuItem = new JMenuItem("Start Ping");
        		menuItem.addActionListener(new StartPingListener());
        		menu1.add(menuItem);
        		menuItem = new JMenuItem("Stop Ping");
        		menuItem.addActionListener(new StopPingListener());
        		menu1.add(menuItem);
        		menuItem = new JMenuItem("Exit");
        		menuItem.addActionListener(new ExitListener());
        		menu1.add(menuItem);
        		menuBar1.add(menu1);
        		
        		// Menu 2 (HELP)
        		menu2 = new JMenu("HELP");
        		menuItem = new JMenuItem("Help");
        		menu2.add(menuItem);
        		menuItem = new JMenuItem("About");
        		menu2.add(menuItem);
        		menuBar1.add(menu2);
        		
        		
        		f.setJMenuBar(menuBar1);
        		
        		
        		f.add(new PanelB1());
        	        f.pack();
        	        f.setSize(800, 600);
        	        f.setVisible(true);

    
   }
    
    
    

    public void startMyPing() {
    	//nix
    }
    

    public void stopMyPing() {
    	//nix
    }
   
    
    
    ///////////////////////////////////////////////////////////////////////////////////////
    //		Get und Set Methoden
    /////////////////////////////////////////////////////////////////////////////////////
    
    public JTextArea getJtextarea1() {
		return jtextarea1;
    }

    public void setJtextarea1(String sjtextarea1) {
		jtextarea1.append(sjtextarea1);
    }
    
    
    
    
    

    ///////////////////////////////////////////////////////////////////////////////////////
    //		Innere ActionListener Klassen
    /////////////////////////////////////////////////////////////////////////////////////
    
    class StartPingListener implements ActionListener {
    	public void actionPerformed(ActionEvent event) {
    		
                setJtextarea1("startMyPing clicked: ");
    		jbutton1.setBackground(Color.blue);

    		//startMyPing();   		
    	}
    }
    
    class StopPingListener implements ActionListener {
    	public void actionPerformed(ActionEvent event) {
    		
                setJtextarea1("stopMyPing clicked: ");
    		//stopMyPing();
    	}
    }
    
    class ExitListener implements ActionListener {
    	public void actionPerformed(ActionEvent event) {
    		System.exit(0);    	
    	}
    }
    
    class jbutton1Listener implements ActionListener {
    	public void actionPerformed(ActionEvent event) {
    		setJtextarea1("Item rechner01 clicked: ");
    		jbutton1.setBackground(Color.blue);

    	}
    }
    
    
}


MAIN:
Java:
public class StartMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		PanelB1 pbe1 = new PanelB1();
		pbe1.go();
		pbe1.setVisible(true);
	}

}

Danke für die Hilfe,
Butti
 
S

SlaterB

Gast
es wäre von Vorteil, wenn du beim Posten im Forum auf dir vielleicht hilfreiche, allgemein aber eher unbekannte Sonderklassen
wie jgoodies, PanelBuilder verzichten würdest

die Listener sind ok, das Problem ist nur dass sie sich auf verschiedene TextAreas in verschiedenen Panels beziehen,
ein Panel davon ist in der GUI angezeigten, deren Listener reagieren gut,
das andere Panel ist nicht angezeigt, da bringt der Listener nicht viel

Tipps gegen solche häufigen Fehler:
- im Listener System.out.println() etwa des HashCodes der JTextArea -> unterschiedlich, Problem identifiziert,
und zeigt nebenbei dass der Listener überhaupt registiert ist und funktioniert

- im Konstruktor von PanelB1 eine Ausgabe -> 2x, das ist immer ungünstig,
am Konstruktor kann man auch verfolgen wo die Objekte erzeugt werden

kommst du mit diesen Informationen weiter?
letztlich muss derzeit nur eine Zeile geändert werden, ich verrate vorerst noch nicht welche ;)
 

butti

Neues Mitglied
Stimmt schon, Sonderklassen machen das unnötig kompliziert (versuche mich dran zu halten).



So funktioniert es jetzt!

Java:
public void go() {    
        	..
…
        	// f.add(new PanelB1());  > falsch !
        	f.add(this);   //         > richtig !
        	..
..
   }

Bin mir nur nicht ganz sicher ob du das meinst, und ich den Rest richtig verstanden habe..???:L

--im Listener System.out.println() etwa des HashCodes der JTextArea -> unterschiedlich..

So ??
System.out.println(jtextarea1.hashCode());

-- im Konstruktor von PanelB1 eine Ausgabe -> 2x
Sagt mir jetzt nicht ganz so viel



Danke und Gruß,
Butti
 
S

SlaterB

Gast
du hast richtig erkannt dass mit
> f.add(new PanelB1());
schlechterweise ein zweites Panel erzeugt wurde, die Klasse sollte nur genau einmal als Objekt benötigt werden

was macht eine Ausgabe (System.out.println(irgendwas)) im Konstruktor?
erscheint 2x wenn schlechterweise 2 Objekt erzeugt werden,
erscheint 1x wenn richtigerweise nur 1 Objekt erzeugt wird,

ergo ist das ein guter Test fürs Programm,
ist ja auch komplett egal
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M TableView + Datenbank Aktualisierung AWT, Swing, JavaFX & SWT 4
N Aktualisierung des Fensters AWT Java ohne Ruckeln AWT, Swing, JavaFX & SWT 3
P Aktualisierung von jLabel in jFrames AWT, Swing, JavaFX & SWT 8
O JavaFX Aktualisierung der Scene AWT, Swing, JavaFX & SWT 1
D Swing keine JLabel-Aktualisierung bei "externem" Aufruf durch Helferklasse AWT, Swing, JavaFX & SWT 10
F Textfeld Währungszahlen und automatische Aktualisierung AWT, Swing, JavaFX & SWT 14
J Denkfehler bei Aktualisierung eines GUI AWT, Swing, JavaFX & SWT 4
S JTable nach aktualisierung - neue Zeile nicht "klickbar" AWT, Swing, JavaFX & SWT 0
T Tetris - Gui Aktualisierung AWT, Swing, JavaFX & SWT 2
Y JFormattedTextfield - Aktualisierung und Beschränkung AWT, Swing, JavaFX & SWT 4
dzim TableView - keine Aktualisierung geänderter Items AWT, Swing, JavaFX & SWT 5
B Aktualisierung einer JList AWT, Swing, JavaFX & SWT 5
D JTable Aktualisierung nach hinzufügen eines Datensatzes AWT, Swing, JavaFX & SWT 7
B Problem bei der Aktualisierung des Frames AWT, Swing, JavaFX & SWT 6
lumo SWT Resize und aktualisierung der gui AWT, Swing, JavaFX & SWT 6
S Swing Aktualisierung Fensters AWT, Swing, JavaFX & SWT 7
K Modaler Dialog aber trotzdem Aktualisierung des MainFrames AWT, Swing, JavaFX & SWT 6
W Swing Aktualisierung des Bildes AWT, Swing, JavaFX & SWT 4
C JTable-Aktualisierung leidiges Thema AWT, Swing, JavaFX & SWT 18
Plastagen JTextArea CaretPosition Aktualisierung AWT, Swing, JavaFX & SWT 10
C permanente aktualisierung der Koordinaten der Maus auf einem Panel AWT, Swing, JavaFX & SWT 8
U JComboBox: (Vor)auswahl nach Aktualisierung AWT, Swing, JavaFX & SWT 2
kodela Swing Problem mit sofortiger Aktualisierung eine Textfeldes AWT, Swing, JavaFX & SWT 8
J Progressbar aktualisierung nach file übergabe AWT, Swing, JavaFX & SWT 7
T Aktualisierung einer JComboBox -> RepaintProblem! AWT, Swing, JavaFX & SWT 3
H Aktualisierung Gui AWT, Swing, JavaFX & SWT 5
G Bessere Aktualisierung eines Frames AWT, Swing, JavaFX & SWT 5
P Problem bei Aktualisierung eines JPanels AWT, Swing, JavaFX & SWT 2
S Aktualisierung der GUI AWT, Swing, JavaFX & SWT 6
S Aktualisierung in regelmäßigen Abständen AWT, Swing, JavaFX & SWT 2
L Problem mit der aktualisierung von JTree und Text Area AWT, Swing, JavaFX & SWT 22
F Aktualisierung während MOUSE_PRESSED AWT, Swing, JavaFX & SWT 4
M swt - problem mit aktualisierung des tableeditors AWT, Swing, JavaFX & SWT 3
G Aktualisierung der Ausgabe in SWT AWT, Swing, JavaFX & SWT 2
A Aktualisierung eines Bildes innerhalb einer Komponente AWT, Swing, JavaFX & SWT 7
A JTable - Aktualisierung und Spaltenbreite AWT, Swing, JavaFX & SWT 5
D Aktualisierung von GUI AWT, Swing, JavaFX & SWT 11
W JTextArea als Logausgabe und Aktualisierung AWT, Swing, JavaFX & SWT 3
C zu späte aktualisierung/repaint AWT, Swing, JavaFX & SWT 3
X Probleme mit aktualisierung durch Repaint() Methode AWT, Swing, JavaFX & SWT 3
R Thread-Problem (Aktualisierung von JLabel-Komponente) AWT, Swing, JavaFX & SWT 9
M problem mit textfield-aktualisierung AWT, Swing, JavaFX & SWT 4
G JScrollPane problem mit aktualisierung der daten AWT, Swing, JavaFX & SWT 3
L Aktualisierung bei JTabbedPane AWT, Swing, JavaFX & SWT 3
T Swing bei Realtime-Aktualisierung zu langsam? AWT, Swing, JavaFX & SWT 10
M JCombobox aktualisierung, beim wecheseln des Tab JTabbedPane AWT, Swing, JavaFX & SWT 3
B SWT Anonyme Eventlistener wegräumen? AWT, Swing, JavaFX & SWT 4
A EventListener für JFormattedTextField AWT, Swing, JavaFX & SWT 6
D JTabbedPane mit Eventlistener versehen? AWT, Swing, JavaFX & SWT 9
S Verständnisfrage EventListener AWT, Swing, JavaFX & SWT 6
O EventListener verschachtekt hinzufügen AWT, Swing, JavaFX & SWT 3
multiholle MVC und EventListener AWT, Swing, JavaFX & SWT 4
S Alle EventListener einer JComponent abfragen? AWT, Swing, JavaFX & SWT 3
P EventListener AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben