Hi,
vielleicht hab ich ja grad ein Brainlack (), aber ich versuche hier seit einer halben Stunde folgende Sache zu implementieren:
Ich habe ein JFrame mit einigen JPanels, diese wiederum halten Buttons, TextAreas usw. Ich möchte in meiner JFrame-Klasse eine Methode anbieten, die ein setEnabled(boolean) auf allen einzelnen Komponenten und Unter-Komponenten aufruft.
Und zwar dynamisch, d.h. ohne konkret zu wissen welche Komponenten es gibt.
Habs versucht und herausgekommen ist folgender nicht kompilierbarer Code:
Das Problem ist, es gibt Component#getComponents() nicht.
JComponents haben diese Methode, aber nicht Components. Auf JComponents kann ich das aber leider auch nicht machen, weil ich von meinem JFrame eine Liste von Components kriege, und eben keine JComponents.
Kann gut sein wie gesagt dass ich hier grad durcheinander komme. Aber ich meine das muss doch möglich sein. Habe es sogar schon über Reflection versucht, bin aber daran gescheitert, ein Field auf eine Klasse hin zu überprüfen:
sagt mir, diese beiden kann ich nicht vergleichen. Verstehe ich nebenbei auch nicht.
Naja okay, könnt ihr mir bitte dabei helfen? Ich möchte ungern in jedem einzelnen Panel eine Methode implementieren, die das macht. Das muss ich ja dann dauernd ändern, ich würds halt lieber dynamisch rekursiv machen.
Danke !
vielleicht hab ich ja grad ein Brainlack (), aber ich versuche hier seit einer halben Stunde folgende Sache zu implementieren:
Ich habe ein JFrame mit einigen JPanels, diese wiederum halten Buttons, TextAreas usw. Ich möchte in meiner JFrame-Klasse eine Methode anbieten, die ein setEnabled(boolean) auf allen einzelnen Komponenten und Unter-Komponenten aufruft.
Und zwar dynamisch, d.h. ohne konkret zu wissen welche Komponenten es gibt.
Habs versucht und herausgekommen ist folgender nicht kompilierbarer Code:
Java:
private void setAllEnabled(boolean enabled) {
for (Component c : this.getContentPane().getComponents()) {
setAllEnabledRec(c, enabled);
}
this.setEnabled(enabled);
}
private void setAllEnabledRec(Component src, boolean enabled) {
for (Component c : c.getComponents()) {
setAllEnabledRec(c, enabled);
c.setEnabled(enabled);
}
src.setEnabled(enabled);
}
Das Problem ist, es gibt Component#getComponents() nicht.
JComponents haben diese Methode, aber nicht Components. Auf JComponents kann ich das aber leider auch nicht machen, weil ich von meinem JFrame eine Liste von Components kriege, und eben keine JComponents.
Kann gut sein wie gesagt dass ich hier grad durcheinander komme. Aber ich meine das muss doch möglich sein. Habe es sogar schon über Reflection versucht, bin aber daran gescheitert, ein Field auf eine Klasse hin zu überprüfen:
Java:
field.getClass() instanceof JComponent
sagt mir, diese beiden kann ich nicht vergleichen. Verstehe ich nebenbei auch nicht.
Naja okay, könnt ihr mir bitte dabei helfen? Ich möchte ungern in jedem einzelnen Panel eine Methode implementieren, die das macht. Das muss ich ja dann dauernd ändern, ich würds halt lieber dynamisch rekursiv machen.
Danke !