een klein java vraagje:
het gaat als volgt die addRegisterAbleObject maakt een HashMap van objecten waarvan de '"key" == "myPane". het Object op die key is een miniobject die
bijhoudt , mPane en de classe van mPane (as expected)...
nu kan er ergens in verdere code een object geregistreerd worden (eg: een XML file die beschrijfd hoe mPane eruit ziet enzo) ... een UI builder zal dus een JTabbedPane creeren en deze doorgeven aan een myClass instance, samen met de key string die ook in de XML staat eg:
zodoende bouwd de builder een JTabbedPane op met key die nu geregistreerd moet worden bij myClass...
nu zoekt myClass in zijn HashMap naar "myPane" en vindt een hit, maar nu zit ik
met een probleem. Hij weet dat de beide objecten van het juiste type zijn en nu moet hij dus een mPane = autoGenerateUIObject doen... maar ik mPane doorgeef als NULL kan dat dus niet.
nu weet ik niet goed hoe in Java ik nu moet zeggen dat hij de mPane member van mijn instance moet 'assignen' aan de generated. Het probleem kom dus neer op het doorgeven van het adress van een member variable en die ergens anders (wel indezelfde class) te assignen. vroeger maakte ik gewoon een method in myClass...
maar als ik grotere UI wil maken vindt ik dat een nuisance en wou ik het graag
wat eenvoudiger maken. bij C++ deed ik dit al een tijdje (pointers - woohoo!
maar in Java zit ik vast... Zoals je ziet wil ik geen regel van Swing UI design in
mijn code zien.
Java:
1
2
3
4
5
6
7
8
9
| public class myClass { private JTabbedPane mPane = null; //weet niet of Java automatish 'nulled' public myClass() { addRegisterAbleObject("myPane", mPane, JTabbedPane.class); } } |
het gaat als volgt die addRegisterAbleObject maakt een HashMap van objecten waarvan de '"key" == "myPane". het Object op die key is een miniobject die
bijhoudt , mPane en de classe van mPane (as expected)...
nu kan er ergens in verdere code een object geregistreerd worden (eg: een XML file die beschrijfd hoe mPane eruit ziet enzo) ... een UI builder zal dus een JTabbedPane creeren en deze doorgeven aan een myClass instance, samen met de key string die ook in de XML staat eg:
code:
1
2
3
4
5
| <ui>
<uiElement type="myClass" registrable="true">
<uiElement register-as="myPane" type="JTabbedPane" />
</uiElement>
</ui> |
zodoende bouwd de builder een JTabbedPane op met key die nu geregistreerd moet worden bij myClass...
nu zoekt myClass in zijn HashMap naar "myPane" en vindt een hit, maar nu zit ik
met een probleem. Hij weet dat de beide objecten van het juiste type zijn en nu moet hij dus een mPane = autoGenerateUIObject doen... maar ik mPane doorgeef als NULL kan dat dus niet.
nu weet ik niet goed hoe in Java ik nu moet zeggen dat hij de mPane member van mijn instance moet 'assignen' aan de generated. Het probleem kom dus neer op het doorgeven van het adress van een member variable en die ergens anders (wel indezelfde class) te assignen. vroeger maakte ik gewoon een method in myClass...
Java:
1
2
3
4
| public boolean onRegister(JComponent aComponent, String aName) { if (aName.equals("myPane")) mPane = (JTabbedPane)aComponent; } |
maar als ik grotere UI wil maken vindt ik dat een nuisance en wou ik het graag
wat eenvoudiger maken. bij C++ deed ik dit al een tijdje (pointers - woohoo!
mijn code zien.