Alternative GUI-Erstellung mit Fehlern !

AvS

Erfahrenes Mitglied
Hi Leute,

ich bastle grad eine GUI und ich hab diesmal einen anderen Ansatz ausprobiert. Nicht jede Komponente in der GUI-Klasse definieren sondern jeder Komponente in einer eigenen Klasse schreiben und dann Objekte dieser Klassen in die GUI einfügen (der Übersichtlichkeit wegen)
Natürlich funktionierts dann irgendwie nicht :)

Java:
/*
		 * Instantiierung der Komponten aus den jeweiligen Klassen
		 */
TextField jtextarea = new TextField();
InfoField jtabbedpane = new InfoField();
WordField jtable = new WordField();

/*
		 * Layout (TableLayout mit 5 Spalten und 5 Zeilen)
		 */
		
		double border = 5;
		double size[][] = { { border, 0.65, border, 14, 0.35, 14, border },
				{ border, 0.60, 16, 0.40, border } };
		setLayout(new TableLayout(size));
		add(jtextarea, "1, 1, 1, 3");
		add(jtabbedpane, "3, 1, 5, 1");
		add(backward, "3, 2");
		add(history, "4, 2");
		add(forward, "5, 2");
		add(jtable, "3, 3, 5, 3");
		setSize(775, 700);

forward, history und backward werden in der Klasse implementiert, die auch von JFrame erbt. Die anderern drei Klassen erben von JComponent.
 
Hi,
und was genau funktioniert nicht? Kannst du eventuell auch mal die Fehlermeldung posten?
Ciao
DosCoder
 
Es gibt keine Fehlermeldung, die Komponenten werden einfach nicht angezeigt, es entsteht ein Frame nur mit den Komponenten, die in der gleichen Klasse sind.
 
Hi,
aus dem Stegreif und ohne Quellcode der einzelnen Klassen würde ich sagen, dass es da Probleme mit deinem Layout gibt. Du kannst ja mal ein simples GridLayout verwenden und schauen ob sich was tut. Du kannst ja auch mal was in dein JTextField schreiben und schauen was passiert.
Ciao
DosCoder
 
Java:
public class WordField extends JPanel
{
	public static DefaultTableModel tablemodel;
	public static JTable wordtable;
	public static JScrollPane scrtable;
	
	public WordField()
	{
		tablemodel = new DefaultTableModel();
		tablemodel.addColumn("Treffer");
		tablemodel.addColumn("Häufigkeiten");
		wordtable = new JTable(tablemodel);
		scrtable = new JScrollPane(wordtable);
		
	}
	
}

Das ist eine der drei Klassen, die in die GUI sollen. Mehr steht nicht drin. Ich könnte das halt alles in die Klasse schreiben, die von JFrame erbt. Aber ich wollte es mal auf andere Weise probieren, da es sonst schnell unübersichtlich wird wenn noch die ganzen Listener hinzukommen !
 
Hi,
wenn das wirklich alles ist, ist klar, wo das Problem liegt. Ein JPanel ist von Haus aus leer, also praktisch unsichtbar. Damit wir es sehen können, muss was drauf gesetzt werden. Dies im Konstruktor genau so, wie von aussen: mit add(...).
Bei deiner fehlt dieser Methodenaufruf. Das Panel hat zwar jetzt eine Tabelle. Schön. Doch auf Panel draufgesetzt ist sie nicht.

AvS hat gesagt.:
wollte es mal auf andere Weise probieren, da es sonst schnell unübersichtlich wird wenn noch die ganzen Listener hinzukommen
Dagegen sagte ich ja auch nichts. Ich mach es nämlich immer so, auch bei kleinen Label-Geschichten.

Ich hoffe, das Problem ist damit beseitigt.
Ciao
DosCoder
 
  • Gefällt mir
Reaktionen: AvS
Okay, klar leuchtet ein. Hab dies jetzt auch eingebaut, das Ergebnis : Die Komponenten sind zu sehen, jedoch sind sie einfach "da" ohne die Formatierung, die das TableLayout vorgibt.
 
Hi,
gut, mit dem TableLayout kenne ich mich nicht aus (ich nutze einen GUI-Builder), also kann ich dir an dieser Stelle leider kein Rat geben. Sorry.
Ciao
DosCoder
 
Zurück