Hallo,
ich hab mir ne Klasse gebastelt die mir ein schönes Fesnter mit ein paar Grundfunktionalitäten gibt,
ich bin dahingehend sehr zufrieden damit und möchte es unbedingt nutzen, weil ich diese Klasse so machen wollte
dass man ihr einfach Components adden kann und sie ordnet sie an, das heisst diese Klasse ist eigentlich nicht für ein spezifisches Problem sondern universell anwendbar.
Leider steh ich jetz vor einem Problem:
Ich weiss nicht so recht welches Layout ich dem Haupt-Panel (auf dass man dann alle Komponenten adden kann) geben soll, weil ich ein Problem damit hab eine Methode bereitzustellen, die diese Komponenten hergibt. Die Komponenten sind ja dann schon Programm-spefizisch und das Programm sollte sich die ja holen können.
Erster Versuch:
Das Problem hier ist: Ich kann in einer beliebiegen Klasse/Stelle des Programms nicht wissen, wann jetz die Component die ich brauche ursprünglich geaddet wurde. Ob zB ein Scrollpane irgendwo als erstes oder drittes Element geaddet wurde, interessiert mich ja nicht in einer Klasse, die lediglich dieses Pane haben will. Also das ist doof.
Dann hab ich mir gedacht:
Problem hier: So eine Methode "hasBorderLayoutOrientation" hab ich nicht gefunden...
Noch eine Idee, wobei hier das Layout erstmal wurscht wäre:
Und wieder ein Problem: Was macht man jetzt, wenn man mehr als 1 gleiche Komponente hat, zB 2 oder 3 Panels oder was weiss ich was...
Also... die Frage ist, welches Layout soll ich nehmen und wie kann ich so eine Methode anbieten, der ich irgendwie einen sinnigen Paramter übergeben kann, sodass ich mir eine Komponente schnappen kann?
sinnig heisst: man sollte davon ausgehen dass die Klasse, die diese Methode aufruft, möglichst wenig oder gar nichts darüber weiss, wann oder wie jetz welche Komponenten mal geaddet wurden, sie will nur diese Komponente der Rest interessiert sie nicht.
Habt ihr da Tipps für mich? Das ganze sollte eben so flexibel und so problem-unspezifisch wie möglich sein...
Danke
ich hab mir ne Klasse gebastelt die mir ein schönes Fesnter mit ein paar Grundfunktionalitäten gibt,
ich bin dahingehend sehr zufrieden damit und möchte es unbedingt nutzen, weil ich diese Klasse so machen wollte
dass man ihr einfach Components adden kann und sie ordnet sie an, das heisst diese Klasse ist eigentlich nicht für ein spezifisches Problem sondern universell anwendbar.
Leider steh ich jetz vor einem Problem:
Ich weiss nicht so recht welches Layout ich dem Haupt-Panel (auf dass man dann alle Komponenten adden kann) geben soll, weil ich ein Problem damit hab eine Methode bereitzustellen, die diese Komponenten hergibt. Die Komponenten sind ja dann schon Programm-spefizisch und das Programm sollte sich die ja holen können.
Erster Versuch:
Code:
main.setLayout(new FlowLayout());
public Component getComponent(int index) {
return main.getComponent(index);
}
Das Problem hier ist: Ich kann in einer beliebiegen Klasse/Stelle des Programms nicht wissen, wann jetz die Component die ich brauche ursprünglich geaddet wurde. Ob zB ein Scrollpane irgendwo als erstes oder drittes Element geaddet wurde, interessiert mich ja nicht in einer Klasse, die lediglich dieses Pane haben will. Also das ist doof.
Dann hab ich mir gedacht:
Code:
main.setLayout(new BorderLayout());
public Component getComponent(int borderLayoutConstant ) {
for(int i = 0; i<main.getComponentCount();i++){
if( main.getComponent(i).hasBorderLayoutOrientation(borderLayoutConstant)) // zB SOUTH oder NORTH
{
return main.getComponent(i);
}
}
Problem hier: So eine Methode "hasBorderLayoutOrientation" hab ich nicht gefunden...
Noch eine Idee, wobei hier das Layout erstmal wurscht wäre:
Code:
public Component getComponent(Component c ) {
for(int i = 0; i<main.getComponentCount();i++){
if( main.getComponent(i).isOfType(c)) // ich glaub die Methode heisst nicht so, aber sowas gibts doch oder?
{
return main.getComponent(i);
}
}
Und wieder ein Problem: Was macht man jetzt, wenn man mehr als 1 gleiche Komponente hat, zB 2 oder 3 Panels oder was weiss ich was...
Also... die Frage ist, welches Layout soll ich nehmen und wie kann ich so eine Methode anbieten, der ich irgendwie einen sinnigen Paramter übergeben kann, sodass ich mir eine Komponente schnappen kann?
sinnig heisst: man sollte davon ausgehen dass die Klasse, die diese Methode aufruft, möglichst wenig oder gar nichts darüber weiss, wann oder wie jetz welche Komponenten mal geaddet wurden, sie will nur diese Komponente der Rest interessiert sie nicht.
Habt ihr da Tipps für mich? Das ganze sollte eben so flexibel und so problem-unspezifisch wie möglich sein...
Danke