Swing finde den fehler nicht

muhbaer

Mitglied
Hallo liebe Java-Gemeinde.
Ich habe letztes Weihnachten damit begonnen immer wieder mal ein bisschen mehr Java zu lernen und bin nun beim Gui programmieren angelangt und habe es geschafft, ein halbwegs funktionierendes Programm zu schreiben.
Dann habe ich etwas verändert und nun funktioniert es nicht mehr so wie es soll.

Was soll das Programm tun: ich habe 2 JCheckboxes, bei der ich eine auswahl treffe, darunter ein JTextfield, in dem ich eine Zahl eingebe und diese zahl mit parseInt in eine int variable schreibe. anhand dieses int variablen-inhalts und der JCheckbox-auswahl soll er mir dann eine ausgabe ins JLabel ausgeben.

es tut sich allerdings nach eingabe und anhaken der checkbox und anschließendem button-druck nichts.

Ich persönlich vermute den Fehler in der Klasse "Level", finde ihn jedoch nicht.

Weiters: beim ausführen des programms in Eclipse erscheinen meine Checkboxes und Buttons und JTextFields erst bei Mouseover ! bug?

danke schonmal für eure Zeit. Und über Feedback über sauberes Programmieren wäre ich dankbar.
lg

hier mal den quellcode meiner 3 Klassen:
Java:
import javax.swing.JFrame;


public class LevelTest {
	public static void main(String[] args) {
		@SuppressWarnings("unused")
		JFrame aFrame = new UnserFrame();						// UnserFrame() Konstruktor aufrufen
       }
}

Java:
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;


public class UnserFrame extends JFrame {    // ich spare mir hierdurch das ständige Eintippen vom JFrame Objekt.
	
	JLabel fraktion;											// Labels, TextFields, Buttons und Checkboxes-Objektnamen reservieren.
	JLabel level;
	JTextField textFraktion;
	JTextField textLevel;
	JLabel recommendation;
	JButton aButton;
	JButton resetButton;
	JCheckBox checkHorde;
	JCheckBox checkAlliance;
	
	public UnserFrame(){ 										// Konstruktor für den zu erstellenden Frame
		setVisible(true);										// sichtbar machen
		setSize(600, 400);										// Fenstergröße 
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);			// schließbar machen
		setLocationRelativeTo(null);							// in der Bildschirm-Mitte positionieren
		setTitle("Levelgebiet Vorschlag");						// Fenstertitel angeben
		setResizable(true);										// Fenstergröße veränderbar
		setLayout(null);										//
		
		
		fraktion = new JLabel("Fraktion:");									//zeigt nur "Fraktion:" an
		Font schrift = (fraktion.getFont().deriveFont(Font.PLAIN, 12));
		fraktion.setBounds(10, 10, 63, 20);
		fraktion.setFont(schrift);
		add(fraktion);
		
		//textFraktion = new JTextField();
		//textFraktion.setBounds(80, 10, 63, 20);
		//add(textFraktion);
		
		level = new JLabel("Level:");										//zeigt nur "Level:" an
		level.setBounds(10, 70, 63, 20);
		level.setFont(schrift);
		add(level);
		
		textLevel = new JTextField();										//zur Eingabe der Zahl für das Level
		textLevel.setBounds(80, 70, 63, 20);
		add(textLevel);
		
		recommendation = new JLabel("");									// hier wird die ausgabe erfolgen
		recommendation.setBounds(10, 100, 300, 20);
		recommendation.setFont(schrift);
		add(recommendation);
		
		
		aButton = new JButton("Recommend");									// der knopf bewirkt die ausgabe ins recommendation JLabel
		aButton.setBounds(10, 130, 110, 20);
		aButton.addActionListener(new RecListener());
		add(aButton);
		
		resetButton = new JButton("reset");									// der knopf soll das level und die fraktion auf 0 oder "" setzen.
		resetButton.setBounds(10, 160, 110, 20);
		resetButton.addActionListener(new ResetListener());
		add(resetButton);
		
		checkHorde = new JCheckBox("Horde");								// 2 checkboxes für fraktionsauswahl 
		checkHorde.setBounds(80, 10, 63, 20);								//
		checkHorde.addItemListener(new HordeListener());					// entsprechenden Listener adden
		add(checkHorde);													// und Checkbox hinzufügen
		checkAlliance = new JCheckBox("Alliance");							// nicht optimal, da beide gleichzeitig anklickbar sind
		checkAlliance.setBounds(80, 40, 93, 20);
		checkAlliance.addItemListener(new AllianceListener());				// entsprechenden Listener adden
		add(checkAlliance);													// und checkbox hinzufügen
	}
	private class ResetListener implements ActionListener{					// der Listener für den Reset button
		Level alevel = new Level();											// Level Objekt erstelle für Zugriff auf Level Klasse.
		@Override	
		public void actionPerformed(ActionEvent e) {						// auf knopfdruck soll auf die Methoden der Level Klasse zugegriffen werden
			// TODO Auto-generated method stub
			alevel.setFraction("");											// die fraktion soll auf "" gesetzt werden.
			alevel.setLevel(0);												// das level soll auf 0 gesetzt werden.
		}
		
	}
	private class RecListener implements ActionListener{					// Listener für das recommendation JLabel

		Level aLevel = new Level();											// Level-Objekt erstellen für zugriff auf Level Klasse
		int i;																// i als speicherort der geparseten eingabe
		String j;															// string als speicherort der Texteingabe. 
	
		public void actionPerformed(ActionEvent e) {						// auf knopfdruck wird die eingabe verarbeitet
			j = textLevel.getText();
			try {															//eingabe in Integer umwandeln
				i = Integer.parseInt(j);
				aLevel.setLevel(i);											//und anhand der eingabe das level setzen
				
				//System.out.println(i);									// für debug - level wird tatsächlich übernommen. 
			} catch (NumberFormatException ex){
				System.out.println("not a number");							//falls keine zahl eingegeben wird fehlermeldung ausgeben
			}recommendation.setText(aLevel.getRecommend()); 				//recommend methode aufrufen und die recommendation ins JLabel reinschreiben
		}

	}
	
	private class AllianceListener implements ItemListener{					// Listener für Alliance JCheckbox
		Level h = new Level();												// Level Objekt für Zugriff auf Level Klasse
		public void itemStateChanged(ItemEvent e) {							// wenn angehakt:
			
			if(checkAlliance.isSelected()){									// setFraction() methode aufrufen und 
				h.setFraction("alliance");									// fraction-String in Klasse Level auf "alliance" stellen
			}
			
		}
		
	}
	private class HordeListener implements ItemListener{					// Listener für Horde JCheckbox
		Level h = new Level();												// Level Objekt für Zugriff auf Level Klasse
		public void itemStateChanged(ItemEvent e) {							// wenn angehakt:
			
			if(checkHorde.isSelected()){									// setFraction() methode aufrufen und
				h.setFraction("horde");										// fraction-String in der Level Klasse auf "horde" stellen
			}
			
		}
		
	}
}

Java:
public class Level {
	int level = 0;
	String fraction = "";
	String aZone[] = {"Westfall","Redridge Mountains","Redridge Mountains",
				 	 		 "Stranglethorn Vale","Western Plaguelands",
				 	 		 "Eastern Plaguelands","Tanaris","Un'Goro Crater",
				 	 		 "Winterspring","Silithus","Blasted Lands",
				 	 		 "your starting area"};
	String hZone[] = {"Northern Barrens","Ashenvale"};
	public void setLevel(int level) {
		this.level = level;
	}
	
	public void setFraction(String fraction) {
		this.fraction = fraction;
	}
	
	public String getRecommend() {
		String returnString ="";
		if ((fraction.equals("horde") && ((level <= 10)))) {
			    returnString = aZone[11];
			} else if ((fraction.equals("horde") && (level >= 10 && level <= 20))) {
				returnString = hZone[0];
			} else if((fraction.equals("horde") && (level >= 20 && level <= 25))) {
				returnString = hZone[1];
			} else if((fraction.equals("horde") && (level >= 25 && level <= 35))) {
				returnString = aZone[3];
			} else if((fraction.equals("horde") && (level >= 35 && level <= 40))) {
				returnString = aZone[4];
			} else if((fraction.equals("horde") && (level >= 40 && level <= 45))) {
				returnString = aZone[5];
			} else if((fraction.equals("horde") && (level >= 45 && level <= 50))) {
				returnString = aZone[6];
			} else if((fraction.equals("horde") && (level >= 50 && level <= 55))) {
				returnString = aZone[7];
			} else if((fraction.equals("horde") && (level >= 55 && level <= 60))) {
				returnString = "Silithus at lvl 55 or Blasted Lands at lvl 54";
			} else if ((fraction.equals("alliance")) && (level >= 10 && level <= 15)) {
					returnString = aZone[11];
				} else if ((fraction.equals("alliance")) && (level >= 15 && level <= 20)) {
					returnString = aZone[2];
				} else if ((fraction.equals("alliance")) && (level >= 25 && level <= 35)) {
					returnString = aZone[3];
				} else if ((fraction.equals("alliance")) && (level >= 35 && level <= 40)) {
					returnString = aZone[4];
				} else if ((fraction.equals("alliance")) && (level >= 40 && level <= 45)) {
					returnString = aZone[5];
				} else if ((fraction.equals("alliance")) && (level >= 45 && level <= 50)) {
					returnString = aZone[6];
				} else if ((fraction.equals("alliance")) && (level >= 50 && level <= 55)) {
					returnString = aZone[7];
				} else if ((fraction.equals("alliance")) && (level >= 55 && level <= 60)) {
					returnString = "Silithus at lvl 55 or in Blasted Lands at lvl 54";
				} else if  ((fraction.equals("alliance")) && (level < 10)) {
					returnString = aZone[10];
				} else System.out.println("wrong input");
			
				 return returnString; 
	}
}
 

Joose

Top Contributor
es tut sich allerdings nach eingabe und anhaken der checkbox und anschließendem button-druck nichts.

Ich persönlich vermute den Fehler in der Klasse "Level", finde ihn jedoch nicht.

Debuggen hätte dich schon längst zur Lösung geführt!
Dein Problem ist sobald du im RecListener
Code:
aLevel.getRecommend()
aufrufst, bekommst du einfach einen leeren String zurück. Somit ist für dich keine Eingabe ersichtlich.

Das genaue Problem ist ... die Fraktion ist nicht gesetzt.
In den Listener der Checkboxen erstellst du jeweils ein Objekt der Klasse Level und setzt dort die Fraktion.
Schön und gut ... diese Objekte existieren aber nicht mehr sobald der Listener fertig gearbeitet hat.
Beim RecListener erzeugst du ein neues Objekt der Klasse Level und dort setzt du nie die Fraktion!

Weiters: beim ausführen des programms in Eclipse erscheinen meine Checkboxes und Buttons und JTextFields erst bei Mouseover ! bug?

Setze mal den Aufruf von
Code:
setVisible(true);
ans Ende des Konstruktors ;)
Du zeigst dein Fenster schon an ohne das du einen Inhalt hinzugefügt hast. Dann wird der Inhalt hinzugefügt und du müsstest dafür sorgen das das Fenster refresht wird.

Und über Feedback über sauberes Programmieren wäre ich dankbar.

Normal sollte man nicht vom JFrame erben, es reicht wenn man ein Objekt davon erstellt und mit diesem arbeitet.
Verwende sprechende Namen für Variablen! Wenn ich
Code:
h, a, aHorde, aButton, ....
lese habe ich keine Ahnung was ich da genau habe!

In der Klasse
Code:
Level
die Methode
Code:
getRecommend
... probiere sie zu vereinfache ;-)
Du vergleichst bei jedem if die Fraktion

Java:
if(fraction.equals("horde")) { // wenn sich der fraktionsname ändern könnte muss du so nur an einer stelle eine anpassung vornehmen
   if(level <= 10) { 
   } else if( level > 10 && level <= 25) { // ACHTUNG: hier kann er reinkommen wenn level = 10, da die vorherige if bedingung zutrifft!
   }
} else if(fraction.equals("alliance")) {
   .... wie oben
} else {
   // ungültige fraktion
}

Ansonsten wird bei gleichen Level oft das selbe gesetzt! Hier kann man auch sicher etwas vereinfachen :)
 

turtle

Top Contributor
Wieder jemand der meint er müsse von JFrame erben. WARUM, WARUM nur:autsch:

Ansonsten ist deine Art der Konstruktion der GUI merkwürdig. Wenn alles fertig ist, ruft man "normalerweise" pack() auf. Das fehlt bei dir und deshalb ist die GUI nur teilweise sichtbar.

Zweitens nimmt man NIE das null-Layout sondern einen richtigen Layout-Manager. Ich habs mal noch drin gelassen, solltest du aber dringend ändern!

Drittens sehe ich Kommentare zu Hauf und bin der Meinung, das du ALLE löschen solltest. Die meisten sagen genau das aus, was auch die Programmzeile sagt und wenn dein Code so unleserlich ist, das er Kommentare braucht, solltest du es anders programmieren.

Viertens sehe ich in deinen Listener Code wie folgt.
Java:
Level h = new Level(); // Level Objekt für Zugriff auf Level Klasse
Dadurch wird aber ein neues Objekt instanziert und somit sind die Felder wie Horde, Alliance bzw. Level nie gesetzt. Also kann dein Recommend-Listener zwar laufen, macht aber nix. Ich habe das Level mal als Klassenfeld gemacht.

Java:
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class UnserFrame extends JFrame {
	JLabel fraktion;
	JLabel level;
	JTextField textFraktion;
	JTextField textLevel;
	JLabel recommendation;
	JButton aButton;
	JButton resetButton;
	JCheckBox checkHorde;
	JCheckBox checkAlliance;
	Level aLevel = new Level();

	public static void main(String[] args) {
		JFrame aFrame = new UnserFrame();
		aFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		aFrame.pack();
		aFrame.setVisible(true);
	}

	public UnserFrame() {
		setTitle("Levelgebiet Vorschlag");
		setLayout(null); // NEIN, NEIN, NEIN

		fraktion = new JLabel("Fraktion:");
		Font schrift = (fraktion.getFont().deriveFont(Font.PLAIN, 12));
		fraktion.setBounds(10, 10, 63, 20);
		fraktion.setFont(schrift);
		add(fraktion);

		level = new JLabel("Level:");
		level.setBounds(10, 70, 63, 20);
		level.setFont(schrift);
		add(level);

		textLevel = new JTextField();
		textLevel.setBounds(80, 70, 63, 20);
		add(textLevel);

		recommendation = new JLabel("");
		recommendation.setBounds(10, 100, 300, 20);
		recommendation.setFont(schrift);
		add(recommendation);

		aButton = new JButton("Recommend");
		aButton.setBounds(10, 130, 110, 20);
		aButton.addActionListener(new RecListener());
		add(aButton);

		resetButton = new JButton("reset");
		resetButton.setBounds(10, 160, 110, 20);
		resetButton.addActionListener(new ResetListener());
		add(resetButton);

		checkHorde = new JCheckBox("Horde");
		checkHorde.setBounds(80, 10, 63, 20);
		checkHorde.addItemListener(new HordeListener());
		add(checkHorde);
		checkAlliance = new JCheckBox("Alliance");
		checkAlliance.setBounds(80, 40, 93, 20);
		checkAlliance.addItemListener(new AllianceListener());
		add(checkAlliance);
	}

	private class ResetListener implements ActionListener {
		Level alevel = new Level();

		@Override
		public void actionPerformed(ActionEvent e) {
			alevel.setFraction("");
			alevel.setLevel(0);
		}

	}

	private class RecListener implements ActionListener {

		int i;
		String j;

		public void actionPerformed(ActionEvent e) {
			j = textLevel.getText();
			try {
				i = Integer.parseInt(j);
				aLevel.setLevel(i);
			} catch (NumberFormatException ex) {
				System.out.println("not a number");
			}
			recommendation.setText(aLevel.getRecommend());
		}

	}

	private class AllianceListener implements ItemListener {
		public void itemStateChanged(ItemEvent e) {

		}

	}

	private class HordeListener implements ItemListener {

		public void itemStateChanged(ItemEvent e) {

			if (checkHorde.isSelected()) {
				aLevel.setFraction("horde");
			}

		}

	}
}
 

muhbaer

Mitglied
[Rechtschreibung] Erstmal danke an alle für eure Zeit !
Ich werde mir auch Zeit nehmen und das alles entsprechend abändern und im Falle von Layout-Manager das mit Sicherheit noch lernen.

Debuggen hätte dich schon längst zur Lösung geführt!
Ich lerne Java seit Dezember, dies nicht intensiv, da ich neben Job und Studium(Biologie, nicht Informatik) 1. nicht viel Zeit habe, neben privaten Aktivitäten noch stundenlang Java zu lernen und 2.fehlt ehrlich gesagt fehlt auch oft die Motivation - von Debuggen habe ich bis dato nichts in meinen Büchern gelesen, wird man doch sehr sehr oft auf spätere Kapitel vertröstet die dann in 5 Jahren dran kämen. Würde ich den Büchern zu 100% folgen, würde ich noch gar kein Eclipse verwenden sondern einen 08/15 Editor.

Man hört immer, man muss programmieren, nur so lernt man's. [/Rechtschreibung] das habe ich getan, und bin nach vielen stunden des grübelns nicht drauf gekommen, wieso es nicht klappt. erst dann habe ich gepostet.
Ich kann mir gut vorstellen, dass hier viele user ihre code reinposten mit der hoffnung, dass man gleich alles ausgearbeitet bekommt und das direkt kopiert und dann kein wort mehr sagt.
das ich hier diesen text schreibe zeigt hoffentlich, dass es in meinem fall nicht so ist.

Wieder jemand der meint er müsse von JFrame erben. WARUM, WARUM nur:autsch:
Weil es bei einem Tutorial auf Youtube so gemacht wurde. Ich habe versucht GUI programmieren nur mit Büchern zu verstehen und bin gescheitert. Dann habe ich mir video tutorials angesehen und dort wurde das so gemacht. Ich dachte mir, wäre eine Gelegenheit, vererbung praktisch zu üben. dies mag in deinen augen etwas infantil wirken, daran kann ich nichts ändern, bin ein java noob.

Ansonsten ist deine Art der Konstruktion der GUI merkwürdig. Wenn alles fertig ist, ruft man "normalerweise" pack() auf. Das fehlt bei dir und deshalb ist die GUI nur teilweise sichtbar.

Weder in meinen 2 Büchern noch in diesen - anscheinend nicht so tollen - video tutorials wurde pack() erwähnt. Ich verwende Head first Java und Ivor Horton's Beginning Java 2 - und wenns doch erwähnt wird, dann hab ichs übersehen. Danke jedoch für den hinweis ! :rtfm:

Zweitens nimmt man NIE das null-Layout sondern einen richtigen Layout-Manager. Ich habs mal noch drin gelassen, solltest du aber dringend ändern!
Danke werde das auf jeden Fall berücksichtigen ! ;)

Drittens sehe ich Kommentare zu Hauf und bin der Meinung, das du ALLE löschen solltest. Die meisten sagen genau das aus, was auch die Programmzeile sagt und wenn dein Code so unleserlich ist, das er Kommentare braucht, solltest du es anders programmieren.
Um ehrlich zu sein, habe ich die Kommentare erst kurz bevor ich gepostet habe eingefügt.
Ich dachte mir, lieber zuviel Kommentar als zuwenig. Liest man doch überall, dass ein Programmierer ohne Kommentar ein schlechter Programmierer ist, der schon mal gefeuert wird.
Und jetzt wird mir gesagt, dass im Grunde jeglicher Kommentar redundant ist, wenn der Code schön geschrieben ist. :rtfm:


summa summarum werde ich denke ich von den video tutorials wieder abstand nehmen und mich wieder meinen büchern witmen. wenn ihr noch tipps habt, wie man - richtig - java lernt, dann immer her damit :)
Besten Dank !
muh
 

Hogli

Mitglied
Hallo.

Ein Tipp: Eclipse führt standardmäßig ein lokale Historie über die Veränderungen des Quellcodes ich glaube der letzten 7 Tage (kann eingestellt werden).

Über Rechtklick auf die Klasse im "Projekt Explorer" -> Compare With -> Local History kann man frühere Versionen der Klasse vergleichen. Meist findet man so die Veränderung die zu dem Fehlverhalten geführt hat sehr schnell. Zumindest dann wenn es eben noch funktioniert hatte.

Zum Java lernen sollte man alle verfügbaren Quellen benutzen. Bücher, Tutorials aber auch Video-Tutorials sind hilfreich, man sollte diese sinnvoll kombinieren. Zur Eclipse-IDE wie dem Thema debugging eher Video-Tutorials oder Web-Tutorials (Suche: Vogella debugging).

Web-Tutorials haben den unschätzbaren Vorteil das man Codeschnipsel direkt kopieren und in eigenen Programmen sofort verwenden kann. Bücher sind gut für Basiswissen aber man muss aufpassen das man keine zu veralteten Bücher durcharbeitet (abhängig vom Thema).

Java Swing GUIs würde ich nur dann noch empfehlen wenn das von jemanden (z.B. Studium) gefordert wird. Zum lernen kann heute JavaFX sinnvoller sein.

Insbesondere mit Tools wie Oracle Scenebuilder (und Lern-Videos dazu) kann man zunächst spielerisch viel mehr erreichen und sich schneller wieder konkreten Programminhalten zuwenden anstatt im Programmcode irgendwelche Knöpfe auszurichten und ActionListener zu definieren.

Grüße Hogli
 

turtle

Top Contributor
bin nach vielen stunden des grübelns nicht drauf gekommen, wieso es nicht klappt. erst dann habe ich gepostet.
Das ist eine löbliche Vorgehensweise, die dich wohlwollend von einigen anderen Forenteilnehmern unterscheidet.:toll:

Ansonsten hören sich einige Punkte vielleicht mies an, wollen dir aber nur Hinweise geben, bei denen du noch deinen Stil verbesseren kannst. Denn nur durch Kritik von Leuten, die mal den Quellcode gelesen haben, wird man besser.;)

Zum Punkte Kommentare möchte ich noch etwas anmerken.
Liest man doch überall, dass ein Programmierer ohne Kommentar ein schlechter Programmierer ist, der schon mal gefeuert wird.
Ich bin auch Anhänger von Clean-Code und dort werden Kommentare in der Tat kritisch gesehen. Und man muss wohl differenzierter feststellen, das javadoc Kommentare in der Tat SEHR hilfreich sind, weil sie beschreiben WAS eine Klasse/Methode macht, im Gegensatz zu Quellcode Kommentaren, die beschreiben WIE etwas gemacht wird. Letztere betrachten Clean-Code und ich als überflüssig.

Das Hauptargument ist, dass Kommentare oft "lügen". Das liegt unter anderem daran, das der Kommentar nicht genau genug beschreibt warum es passiert und/oder das Programmzeilen geändert werden und der zugehörige Kommentar selten angepasst wird. So hat man mit der Zeit Code UND daneben Kommentare, die nicht (mehr) dazu passen.
Ebenso sind Kommentare dieser Art
Java:
setVisible(true); // sichtbar machen
völlig unsinnig und stören nur beim Lesen. ICH überlese solche Dinge in der Zwischenzeit, sind aber trotzdem IMHO zu vermeiden.

Zum Thema GUI auch noch ein Kommentar. In der Tat hatte ich auch Schwierigkeiten mich mit den verschiedenen Layout-Manager anzufreunden. Bis ich den "besten" Layout-Manager für Swing gefunden habe und seitdem ausschliesslich verwende: JGoodies FormLayout In Eclipse gibt es das WindowBuilder Plugin, welches jGoodies ebenfalls unterstützt.
 

muhbaer

Mitglied
Ein Tipp: Eclipse führt standardmäßig ein lokale Historie über die Veränderungen des Quellcodes ich glaube der letzten 7 Tage (kann eingestellt werden).
genialer hinweis, danke ! :)

Java Swing GUIs würde ich nur dann noch empfehlen wenn das von jemanden (z.B. Studium) gefordert wird. Zum lernen kann heute JavaFX sinnvoller sein.

habe ein eher unangenehmes gefühl, solche sachen auszulassen, weil sie maybe für das verständnis an sich wichtig sein könnten.

Zum Punkte Kommentare möchte ich noch etwas anmerken.
Ich bin auch Anhänger von Clean-Code und dort werden Kommentare in der Tat kritisch gesehen.

in der tat kann ich deinen standpunkt sehr gut nachvollziehen und bin auch deiner meinung, dass ein java programmierer wissen sollte, was int i = 0; bedeutet.
was natürlich eine unbekannte klasse macht, sollte dann schon kommentiert werden, stimme ich auch zu.
ist nur für mich etwas komplett neues, da ich früher auch nicht programmiert habe, aber du hast das sehr intuitiv argumentiert und damit kann ich sehr gut arbeiten ;)

Bis ich den "besten" Layout-Manager für Swing gefunden habe und seitdem ausschliesslich verwende: JGoodies FormLayout In Eclipse gibt es das WindowBuilder Plugin, welches jGoodies ebenfalls unterstützt.

hier wieder mein argument von vorhin, dass mir möglicherweise etwas entgehen könnte, wenn ich andere manager ausließe.

bitte eure meinung: würdet ihr mir raten, einzelne sachen beim lernen auszuklammern, oder ist für das verständnis alles notwendig?
habe oft gelesen, dass man das rad nicht neu erfinden sollte(vorallem wenn man andere klassen verwendet), jedoch ist es anfangs vielleicht garnicht so schlecht, zumindest den versuch zu starten es neu zu erfinden, oder? was meint ihr.
habe nämlich wie gesagt nicht all zu viel zeit, jedoch bin ich auch noch relativ jung und habe sicher noch viele viele jahre vor mir ;)
 

Joose

Top Contributor
......habe oft gelesen, dass man das rad nicht neu erfinden sollte(vorallem wenn man andere klassen verwendet), jedoch ist es anfangs vielleicht garnicht so schlecht, zumindest den versuch zu starten es neu zu erfinden, oder? was meint ihr.

Genau, viele Kleinigkeiten sind schon mal entwickelt worden. Hier das selbe nochmals erfinden ist unsinnig (Ressourcenverschwendung).
ABER(!) es ist nicht falsch sich solche vorhandenen Sachen herzunehmen und diese einfach mal zu "zerlegen" und damit zu experimentieren :) sich den Sourcecode anzuschauen etc.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z GUI-Problem, finde meinen Fehler nicht! AWT, Swing, JavaFX & SWT 11
P finde den Fehler im JTable nicht AWT, Swing, JavaFX & SWT 2
clemson Finde den Fehler nicht AWT, Swing, JavaFX & SWT 7
S Swing Finde Grund für NullPointerExeption nicht. AWT, Swing, JavaFX & SWT 2
M JavaFX Wo finde ich den Scene Builder? AWT, Swing, JavaFX & SWT 3
Z Java Draw -JFrame finde nicht die Mitte & höhe, breite AWT, Swing, JavaFX & SWT 7
K mehrere JTextFields - wie finde ich die Cursor-Position? AWT, Swing, JavaFX & SWT 5
S Swing DnD: Wie finde ich heraus, von welcher Zelle aus im JTable der Drag gestartet wurde? AWT, Swing, JavaFX & SWT 3
F Swing J(X)Table Spalten umsortieren NUR im View (Wie finde ich eine Spalte nach Name?) AWT, Swing, JavaFX & SWT 3
S Um Insets erweiteter BorderLayoutManager oder "Wo finde ich den Quellcode?" AWT, Swing, JavaFX & SWT 2
B Finde kein PrintService der das Attribut PageRanges annimmt AWT, Swing, JavaFX & SWT 22
G Wo finde ich Icons zum runterladen AWT, Swing, JavaFX & SWT 3
N Wie finde ich den Pfad eines ImageIcons heraus? AWT, Swing, JavaFX & SWT 8
D Wo finde ich Informationen zu Swing AWT, Swing, JavaFX & SWT 2
hannibalstgt Fehler bei JCOMBOBOX GUI Anzeige AWT, Swing, JavaFX & SWT 4
J Fehler bei jFame.setTitle() AWT, Swing, JavaFX & SWT 8
thor_norsk SpringBoot-Fehler AWT, Swing, JavaFX & SWT 7
J Ich kriege eine Fehler Messesage bei meinem Media Player AWT, Swing, JavaFX & SWT 8
H Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen AWT, Swing, JavaFX & SWT 44
S Fehler beim Öffnen weiterer FXML AWT, Swing, JavaFX & SWT 11
S JavaFX Fehler zwischen View und Controller bei MouseEvent (MVC) AWT, Swing, JavaFX & SWT 13
T ListView nach Erweiterung Fehler in CellFactory AWT, Swing, JavaFX & SWT 8
beli3ver JavaFX Anwendung startet nicht, kann den Fehler nicht finden (Exception in Application start method) AWT, Swing, JavaFX & SWT 1
J "Exception in thread "AWT-EventQueue-0"" Fehler AWT, Swing, JavaFX & SWT 3
parrot JavaFX Fehler AWT, Swing, JavaFX & SWT 4
H JavaFX JavaFX Import Fehler AWT, Swing, JavaFX & SWT 4
T Anderen Java Code durch Code kompilieren und Fehler in Label ausgeben AWT, Swing, JavaFX & SWT 5
M AWT Kann meinen Fehler beim ActionListener nicht finden AWT, Swing, JavaFX & SWT 5
Z Swing Wert aus Textfeld auslesen -- null Fehler AWT, Swing, JavaFX & SWT 4
A eine Fehler AWT, Swing, JavaFX & SWT 9
A Fehler beim Hintergrund AWT, Swing, JavaFX & SWT 17
L JavaFX Fehler beim setzen von Farben AWT, Swing, JavaFX & SWT 16
B JavaFX Text wird nicht angezeigt, kein Fehler AWT, Swing, JavaFX & SWT 2
W fillRect() in Schleife spukt nur Fehler aus AWT, Swing, JavaFX & SWT 3
S Fehler: Hauptklasse neon.Main konnte nicht gefunden oder geladen werden AWT, Swing, JavaFX & SWT 5
Tronert JavaFX Fehler beim Ändern der font-weight AWT, Swing, JavaFX & SWT 7
Tommy135 JavaFX JavaFX Fehler beim Scenewechsel AWT, Swing, JavaFX & SWT 23
V JavaFX Button Controller Fehler, trotz Erfolg in einem anderem Code? AWT, Swing, JavaFX & SWT 7
E Fehler bei Button AWT, Swing, JavaFX & SWT 1
L Unbekannter Fehler AWT, Swing, JavaFX & SWT 13
H JavaFX Kriege fehler beim Fenster wechseln AWT, Swing, JavaFX & SWT 7
I Fehler bei Alert AWT, Swing, JavaFX & SWT 6
J Fehler bei PixelColor erkennung AWT, Swing, JavaFX & SWT 4
T Fehler bei ActionEvent? AWT, Swing, JavaFX & SWT 3
V Fehler bei Würfelsimulator GUI AWT, Swing, JavaFX & SWT 2
Seikuassi SWING - (Hoffentlicher) simpler Color-Fehler AWT, Swing, JavaFX & SWT 4
A Fehler bei erstellen eines JTextFields AWT, Swing, JavaFX & SWT 2
D Unlogischer Fehler? AWT, Swing, JavaFX & SWT 2
L Eclipse Fehler besser zu verstehen!!! AWT, Swing, JavaFX & SWT 4
E Warum macht die einfache Animation einen kleinen Fehler? AWT, Swing, JavaFX & SWT 14
bluerob Fehler bei Wertübermittlung über KeyListener AWT, Swing, JavaFX & SWT 3
H GUI-Textausgabe Fehler AWT, Swing, JavaFX & SWT 5
S String is null Fehler AWT, Swing, JavaFX & SWT 2
P Swing GroupLayout() Fehler? AWT, Swing, JavaFX & SWT 3
J JMenuBar ist geaddet, aber nicht im Frame. Wo ist der Fehler? (inkl. Code) AWT, Swing, JavaFX & SWT 2
N Touchscreen-Scrollen, wo liegt der Fehler? AWT, Swing, JavaFX & SWT 3
N Fehler Inhalt von JTable wird gelöscht AWT, Swing, JavaFX & SWT 5
S Fehler beim Zweites 3D Bild AWT, Swing, JavaFX & SWT 2
L Fehler beim erstellen einer Tabelle mithilfe von 2d-Array AWT, Swing, JavaFX & SWT 3
M GEF tutorial Fehler finden AWT, Swing, JavaFX & SWT 4
S Grafik Fehler AWT, Swing, JavaFX & SWT 15
M Fehler bei Arrayübergabe an JComboBox AWT, Swing, JavaFX & SWT 10
J Fehler beim Einklappen eines Trees AWT, Swing, JavaFX & SWT 4
P 2D-Grafik Fehler beim Laden eines Bildes AWT, Swing, JavaFX & SWT 25
S LayoutManager Fehler gesucht 18.6.2011 AWT, Swing, JavaFX & SWT 4
C Fehler nur bei manchen Usern AWT, Swing, JavaFX & SWT 8
Screen Fehler bei Get-Methode für ArrayList AWT, Swing, JavaFX & SWT 8
K JFrame + KeyListener + Runnable = Fehler AWT, Swing, JavaFX & SWT 3
I Fehler bei JFileChooser AWT, Swing, JavaFX & SWT 2
K 2D-Grafik Fehler beim Farbe auslesen AWT, Swing, JavaFX & SWT 3
J Fehler beim Gif Datei öffnen AWT, Swing, JavaFX & SWT 2
J 2D-Grafik Fehler beim Überzeichnen von Linien AWT, Swing, JavaFX & SWT 11
E Swing Fehler nach Befüllen einer JTable mit gesetzem Rowsort?! AWT, Swing, JavaFX & SWT 10
P Swing Misteriöser Fehler JTable AWT, Swing, JavaFX & SWT 5
Y Swing JPasswordField Fehler AWT, Swing, JavaFX & SWT 14
A Swing Unknown Source Fehler AWT, Swing, JavaFX & SWT 9
N Fehler bei Grouplayout AWT, Swing, JavaFX & SWT 17
S ActionPerformed Fehler... AWT, Swing, JavaFX & SWT 9
C BufferedImage-Fehler? Falsches Bild wir gezeichnet AWT, Swing, JavaFX & SWT 5
A Tabellen Überschriften ändern -setColumnIdentifiers()- Fehler AWT, Swing, JavaFX & SWT 7
hdi Swing JTable: Fehler beim Nutzen von RowSorter#setRowFilter AWT, Swing, JavaFX & SWT 4
M.F.G. Fehler bei der Anzeige Grafischer Elemente AWT, Swing, JavaFX & SWT 13
D Swing Verwirrender Fehler AWT, Swing, JavaFX & SWT 7
J Fehler in fillRoundRect AWT, Swing, JavaFX & SWT 2
D Probleme mit Spiel-Engine. Komische Fehler. AWT, Swing, JavaFX & SWT 5
W fehler jedoch ka wo AWT, Swing, JavaFX & SWT 14
F Fehler in der Startklasse AWT, Swing, JavaFX & SWT 13
A Fehler bei der Parametereingabe? AWT, Swing, JavaFX & SWT 16
Spin Fehler in Vergleich AWT, Swing, JavaFX & SWT 6
K Swing: ContentPane von JDialog ist transparent (Fehler) AWT, Swing, JavaFX & SWT 10
Dragonfire ZoomImage flackert -> Fehler: repaint-Aufruf [gelöst] AWT, Swing, JavaFX & SWT 5
T Invalid Range - Fehler bei TableRowSorter / Tabelle AWT, Swing, JavaFX & SWT 17
DasDogma Fehler bei getText() AWT, Swing, JavaFX & SWT 10
I Fehler bei verschachtelten JScrollPanes AWT, Swing, JavaFX & SWT 2
M Fehler beim Zugriff von awt-KeyListener auf swt-Shell AWT, Swing, JavaFX & SWT 2
GilbertGrape Fehler bei HTML in JTextPane AWT, Swing, JavaFX & SWT 2
K Textfelder auslesen gibt immer Fehler AWT, Swing, JavaFX & SWT 2
D Fehler bei Button Array AWT, Swing, JavaFX & SWT 8
P Fehler beim Einlesen eines JTextFields AWT, Swing, JavaFX & SWT 2
G Viele Fehler beim zeichen AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben