Hogy lehet Javaban előtérben helyezni valamit?
Pl.
El van helyezve egy JPanelen 2 címke, BorderLayout-tal, és a középre.
Hogy lehet, kiválasztani azt, hogy melyik látszódjon?
Egy rekeszbe csak egyvalamit tehetsz, ergo az egyik címkével "felülírod" a másikat. Ezzel nincs kifejezetten probléma. Melyik látszódjon? Lássuk csak... :)
Az egyik lehetőséged, hogy létrehozod a címkéket, és az épp megjelenítendőt akasztod a layoutra:
public class ComponentSwapper {
˙˙˙˙private Container container;
˙˙˙˙private int position;
˙˙˙˙private Map<String, Component> components;
˙˙˙˙public ComponentSwapper(Container container, int position, Map<String, Component> components) {
˙˙˙˙˙˙˙˙this.container = container;
˙˙˙˙˙˙˙˙this.position = position;
˙˙˙˙˙˙˙˙this.components = components;
˙˙˙˙}
˙˙˙˙public void swap(String id) {
˙˙˙˙˙˙˙˙container.add(components.get(id));
˙˙˙˙}
}
A fenti kód természtesen korántsem teljesértékű, hiányzik belőle pl. a hibakezelés, de a koncepciót jól mutatja.
Ennél jobb megoldás azonban, főleg, ha címkéről beszélünk, ha egyetlen címkéd van, és annak a tartalmát módosítod:
public class JLabelMessageView implements MessageView {
˙˙˙˙private JLabel uiComponent;
˙˙˙˙private Map<String, String> messages;
˙˙˙˙public JLabelMessageView (Container parentComponent, int position, Map<String, String> messages) {
˙˙˙˙˙˙˙˙uiComponent = new JLabel();
˙˙˙˙˙˙˙˙this.messages = messsages;
˙˙˙˙˙˙˙˙parentComponent.add(uiComponent, position);
˙˙˙˙˙˙˙˙parentComponent.invalidate();
˙˙˙˙}
˙˙˙˙@Override
˙˙˙˙public void setMessage(String messageId) {
˙˙˙˙˙˙˙˙uiComponent.setText(messages.get(messageId));
˙˙˙˙}
}
Ezen is van persze még mit refaktorálni, de out-of-scope részletekbe nem akartam belemenni.
A "messages" -be például property fájlból lehet konfigurált, lokalizált szövegeket tölteni, az alkalmazás többi részének pedig csak az adott szöveg ID értékét kell tudnia.
Van még persze számos más megoldás is, de most ezek jutottak elsőre eszembe, mindet meg azért nem írnám le, ha nem gond...
UI.: Mégegyszer felhívnám a figyelmet arra, hogy éles használatra a fenti kódok kevéssé alkalmasak.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!