J
jago
Gast
Hi,
ich habe ein JPanel dem ich Componenten hinzufuege. Das hab ich schon zigmal gemacht nur will er diesmal nicht die Groesse des JPanel nach dem hinzufuegen anpassen obwohl ich folgendes aufrufe:
Lustigerweise reicht es aus das JFrame zu minimieren und wieder in den Vordergrund holen (eigentlich gibts dann nur ein repaint, oder?) um die von mir gewuenschte Groessenaenderung durchzufuehren.
Irgendwie sind parents von panel zu faul der Aenderung von meinem JPanel zu folgen und die Groesse von JPanel anzupassen. Nach vielem experimentieren habe ich festgestellt, dass ein:
den gewuenschten Effekt bringt und die Groesse von JPanel anpasst und ich nun alle hinzugefuegten Componenten sehe.
Kann mir jemand erklaeren was da passiert? Blockiert der weiter oben liegende Parent-Container dies oder was laeuft falsch wenn ich den Refresh-Vorgang direkt auf das panel ausfuehren will? Irgendwo wird vielleicht die Information dass neue Componenten hinzugefuegt wurden nicht weitergeleitet oder ignoriert?
Ich wuerde leiber gerne das Problem verstehen als zu diesem Hack zu greifen zumal ich nicht immer weiss der wievielte parent es ist und aus vielen anderen Gruenden.
Wie geht man einem solchen Problem nach? Wie detektieren die parents weiter oben normalerweise ob sie gelayouted werden muessen oder nicht?
ich habe ein JPanel dem ich Componenten hinzufuege. Das hab ich schon zigmal gemacht nur will er diesmal nicht die Groesse des JPanel nach dem hinzufuegen anpassen obwohl ich folgendes aufrufe:
Code:
panel.invalidate();
panel.validate();
panel.repaint();
Lustigerweise reicht es aus das JFrame zu minimieren und wieder in den Vordergrund holen (eigentlich gibts dann nur ein repaint, oder?) um die von mir gewuenschte Groessenaenderung durchzufuehren.
Irgendwie sind parents von panel zu faul der Aenderung von meinem JPanel zu folgen und die Groesse von JPanel anzupassen. Nach vielem experimentieren habe ich festgestellt, dass ein:
Code:
panel.getParent().getParent().invalidate();
panel.getParent().getParent().validate();
panel.getParent().getParent().repaint();
den gewuenschten Effekt bringt und die Groesse von JPanel anpasst und ich nun alle hinzugefuegten Componenten sehe.
Kann mir jemand erklaeren was da passiert? Blockiert der weiter oben liegende Parent-Container dies oder was laeuft falsch wenn ich den Refresh-Vorgang direkt auf das panel ausfuehren will? Irgendwo wird vielleicht die Information dass neue Componenten hinzugefuegt wurden nicht weitergeleitet oder ignoriert?
Ich wuerde leiber gerne das Problem verstehen als zu diesem Hack zu greifen zumal ich nicht immer weiss der wievielte parent es ist und aus vielen anderen Gruenden.
Wie geht man einem solchen Problem nach? Wie detektieren die parents weiter oben normalerweise ob sie gelayouted werden muessen oder nicht?