ActionListener zerschießt AnchorLayout

Lit-Web

Aktives Mitglied
Guten Morgaen @all,

nun habe ich ein Layout gefunden was sich eigentlich gut handeln lässt, jaedoch passieren wieder Dinge die ich nicht wirklich nachvollziehen kann.

Die GUI wird ordentlich angezeigt bis ich den ActionListener beim JButten aktiviere, bzw. hinzufüge. Dann zerballert es mir das ganze Layout.

Hier mal meine Codes.

ProgrammFrame
Java:
package GUIClasses;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.*;

import ConnectClasses.DbConnect;

import com.cloudgarden.layout.AnchorLayout;
import com.cloudgarden.layout.AnchorConstraint;

import java.sql.*;

/**
 * 
 * @author LitWeb (Daniel Seelig)
 * 
 * @discription
 * 		Hauptprogrammfenster
 * 
 * */
public class ProgramFrameGui extends JFrame {
	
	protected LoginFormGui login;
	protected AnchorLayout anl;
	protected AnchorConstraint anc;
	protected DbConnect dbCon;
	
	/**
	 * 
	 * Konstruktor
	 * 
	 * */
	public ProgramFrameGui ( DbConnect pDbCon ) {
		super( "Kontakt und Adressverwaltung von Lit-Web" );
		dbCon = pDbCon;
		init();
		initGui();
	}
	
	protected void init () {
		anl = new AnchorLayout();
		anc = new AnchorConstraint();
		login = new LoginFormGui( dbCon );
	}
	
	/**
	 * 
	 * GUI Elemente Initialisierer
	 * 
	 * */
	protected void initGui () {
		this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		this.setLayout( anl );
		this.setSize( new Dimension( 900, 700 ));
		this.add( login, new AnchorConstraint( 0, 0, 0, 0, AnchorConstraint.ANCHOR_NONE, AnchorConstraint.ANCHOR_NONE, AnchorConstraint.ANCHOR_NONE, AnchorConstraint.ANCHOR_NONE ) );
		this.setVisible( true );
	}
}

LoginGui
Java:
package GUIClasses;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

import CheckClasses.LoginCheck;
import ConnectClasses.DbConnect;

import com.cloudgarden.layout.AnchorLayout;
import com.cloudgarden.layout.AnchorConstraint;

import java.sql.*;

public class LoginFormGui extends JPanel {
	
	protected AnchorLayout anl;
	protected AnchorConstraint anc;
	protected JPanel pnlLogin;
	protected JTextField txtLogName;
	protected JTextField txtLogPwd;
	protected JLabel lblLogName;
	protected JLabel lblLogPwd;
	protected JButton btnLogin;
	protected LoginCheck ckLogin;
	protected DbConnect dbCon;
	
	public LoginFormGui ( DbConnect pDbCon ) {
		dbCon = pDbCon;
		init();
		initGui();
	}
	
	protected void init () {
		anl = new AnchorLayout();
		anc = new AnchorConstraint();
		pnlLogin = new JPanel();
		txtLogName = new JTextField();
		txtLogPwd = new JTextField();
		lblLogName = new JLabel();
		lblLogPwd = new JLabel();
		btnLogin = new JButton();
		ckLogin = new LoginCheck();
	}
	
	protected void initGui () {
		this.setBackground( new Color( 255, 255, 255 ) );
		this.setLayout( anl );
		
		this.pnlLogin();
		
		this.add( pnlLogin, new AnchorConstraint( 
								200, 
								200, 
								200, 
								200, 
								AnchorConstraint.ANCHOR_ABS, 
								AnchorConstraint.ANCHOR_ABS, 
								AnchorConstraint.ANCHOR_ABS, 
								AnchorConstraint.ANCHOR_ABS 
							) 
				);
		
		this.showLblLogName();
		this.showLblLogPwd();
		this.showTxtLoginName();
		this.showTxtLoginPwd();
		this.showBtnLogin();
	}
	
	protected void pnlLogin () {
		pnlLogin.setBackground( new Color( 155, 155, 255 ) );
		pnlLogin.setLayout( anl );
		
		pnlLogin.add( lblLogName, new AnchorConstraint( 
								200, 
								350, 
								370, 
								200, 
								AnchorConstraint.ANCHOR_REL, 
								AnchorConstraint.ANCHOR_REL, 
								AnchorConstraint.ANCHOR_REL, 
								AnchorConstraint.ANCHOR_REL 
							) 
				);
		
		pnlLogin.add( lblLogPwd, new AnchorConstraint( 
								400, 
								350, 
								570, 
								200,  
								AnchorConstraint.ANCHOR_REL, 
								AnchorConstraint.ANCHOR_REL, 
								AnchorConstraint.ANCHOR_REL, 
								AnchorConstraint.ANCHOR_REL 
							)  
				);
		
		pnlLogin.add( txtLogName, new AnchorConstraint( 
								240, 
								780, 
								320, 
								470, 
								AnchorConstraint.ANCHOR_REL, 
								AnchorConstraint.ANCHOR_REL, 
								AnchorConstraint.ANCHOR_REL, 
								AnchorConstraint.ANCHOR_REL 
							) 
				);
		
		pnlLogin.add( txtLogPwd, new AnchorConstraint( 
								450, 
								780, 
								530, 
								470, 
								AnchorConstraint.ANCHOR_REL, 
								AnchorConstraint.ANCHOR_REL, 
								AnchorConstraint.ANCHOR_REL, 
								AnchorConstraint.ANCHOR_REL 
							)   
				);
		
		pnlLogin.add( btnLogin, new AnchorConstraint( 
								580, 
								780, 
								660, 
								490, 
								AnchorConstraint.ANCHOR_REL, 
								AnchorConstraint.ANCHOR_REL, 
								AnchorConstraint.ANCHOR_REL, 
								AnchorConstraint.ANCHOR_REL 
							)  
				);
	}
	
	protected void showLblLogName () {
		lblLogName.setText( "Loginname" );
		lblLogName.setPreferredSize( new Dimension( 120, 20 ) );
		lblLogName.setFont( new Font( "Arial", Font.BOLD, 12 ) );
		lblLogName.setForeground( Color.black );
	}
	
	protected void showLblLogPwd () {
		lblLogPwd.setText( "Password" );
		lblLogPwd.setPreferredSize( new Dimension( 120, 20 ) );
		lblLogPwd.setFont( new Font( "Arial", Font.BOLD, 12 ) );
		lblLogPwd.setForeground( Color.black );
	}
	
	protected void showTxtLoginName () {
		txtLogName.setPreferredSize( new Dimension( 120, 20 ) );
	}
	
	protected void showTxtLoginPwd () {
		txtLogPwd.setPreferredSize( new Dimension( 120, 20 ) );
	}
	
	protected void showBtnLogin () {
		btnLogin.setPreferredSize( new Dimension( 80, 20 ) );
		btnLogin.setText( "Login" );
		btnLogin.setBackground( Color.black );
		btnLogin.setFont( new Font( "Arial", Font.BOLD, 12 ) );
		btnLogin.setForeground( Color.white );
//		btnLogin.addActionListener( new BtnLoginAction( this ) );
	}
	
	/**
	 * 
	 * Hilfsklasse um das Login Panel bei einem erfolgreichen Login auszublenden
	 * und das Programmbedieungspanel einzublenden
	 * 
	 * */
	class BtnLoginAction implements ActionListener {
		
		protected JPanel logPnl;
		
		/*
		 * 
		 * Konstruktor
		 * @param pLoginPanel:JPanel
		 * 		LoginPanel Object wird bei erfolgreichen login ausgeblendet
		 * 
		 * */
		public BtnLoginAction ( JPanel pLoginPanel ) {
			logPnl = pLoginPanel;
		}
		
		public void actionPerformed ( ActionEvent pEvent ) {
			
			boolean logged = ckLogin.checkLogin( dbCon, txtLogName.getText(), txtLogPwd.getText() );
			
			if ( logged == true ) {
				logPnl.setVisible( false );
			}
		}
	}
}

Sobald ich in der LoginGui die Zeile 167 nicht mehr als Kommentar im Code habe, also der Action Listener dann aktiv hinzugefügt wird dem JButton, zerschißt es mein ganzes Layout.
Könnt ihr mir vieleiht weiterhelfen und erklären warum das passiert?

Vielen Dank für eure Zeit und Mühe sowie Hilfe.

Mfg Lit-Web
 
Zuletzt bearbeitet:

r.w.

Bekanntes Mitglied
Vielleicht hab ich ja was übersehen, aber auf den ersten Blick finde ich da nichts.
Ich würde vorschlagen, Dich jetzt weiter heranzutasten, indem Du die Zeile 167
wieder rein nimmst, Teile in "BtnLoginAction" auskommentierst und dann siehst, was passiert.
Anfangen würde ich mit dem Inhalt der actionPerformed-Methode. Zuerst komplett,
dann zeilenweise.

Ich hoffe, das hilft Dir schon mal weiter.

VG ROlf
 

Lit-Web

Aktives Mitglied
Hallo und danke für deine Antwort.

Ich habe genau das jetzt mal probiert was du geschrieben hast, aber egal was ich mache es bleibt das selber Ergebnis, mein Layout wird zerballert. Nur wenn ich die besagte Zeile komplett auskkommentiere dann erscheint das Layout wie es soll.

Ich weiß wirklich nicht wo ich da ansetzen soll. Zumal eine ActionListener doch nichts mit Layoutkomponenten am Hut die das Layout am Ende zerschießen könnten.

Hat jemand vieleicht den hellen Durchblick?

Mfg Lit-Web
 
C

Camino

Gast
Was bedeutet denn "zerschißt es mein ganzes Layout"? Was passiert denn genau bzw. wie sieht es vorher und nachher aus und was verändert sich am Layout dadurch?

Ich kenne zwar das AnchorLayout nicht, aber seltsam kommt mir vor, dass du zuerst das Layout anlegst und den Button mit AnchorConstraint zufügst, und dann später erst mit showBtnLogin() den Button gestaltest. Würde andersherum vielleicht eher Sinn machen. Aber warum es dann nur an dem Hinzufügen des ActionListeners liegen soll, verstehe ich auch nicht.
 

Lit-Web

Aktives Mitglied
Ich habe die Reihenfolge geändert, was auch wirklich Sinn macht.
Aber am Ergebnis ändert das nichts. Ich habe zwei Grafiken gemacht.
Die erste zeigt das Layout ohne das hinzufügen des Action Listeners und die zweite wenn der Action Listner hinzugefügt ist.
 

Anhänge

  • layout_ohne_al.JPG
    layout_ohne_al.JPG
    20,7 KB · Aufrufe: 27
  • layout_mit_al.JPG
    layout_mit_al.JPG
    14,5 KB · Aufrufe: 29
C

Camino

Gast
Hmm, zum korrekten Aufbau des AnchorLayouts kann ich nicht so viel sagen, da ich es nicht kenne. Aber wenn es nur am Hinzufügen des ActionListeners liegt, dann lass dir doch mal den boolean-Wertes logged ausgeben, oder kommentier mal das
Code:
logPnl.setVisible( false )
aus bzw. setz den Wert auf true.
 

Lit-Web

Aktives Mitglied
Das habe ich alles schon probiert, habe sogar den kompletten Inhalt der Methode actionPerformed auskommentier und somit egentlich den blanken Actionlistener nur hinzugefügt.
Es bleibt das gleiche Resultat.
 
C

Camino

Gast
Na ja, wie schon gesagt, ich denke es gibt Probleme mit der Reihenfolge. Du solltest zuerst die Komponenten fertig gestalten und danach erst zum Layout hinzufügen. Ich würde dies auch nicht alles in eigene Methoden auslagern, sondern so unkompliziert und übersichtlich wie möglich machen.

Bezüglich deinem Login-Panel könntest du auch einen JDialog nehmen...
 
B

bERt0r

Gast
Was ich nicht ganz verstehe ist warum du dein AnchorLayout zentral anlegst und dann sowohl zu deiner LoginGui als auch zu deinem LoginPanel zuweist. Es könnte sein dass du dir dadurch dein layout "zerschiesst". Also einfach logPnl.setLayout(new AnchorLayout()); Probiers mal.
 
Ä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
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
V ActionListener bei vielen Modulen Java Basics - Anfänger-Themen 3
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