Kezdőoldal » Számítástechnika » Programozás » Hogy lehet Javaban előtérben...

Hogy lehet Javaban előtérben helyezni valamit?

Figyelt kérdés

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?


2011. dec. 1. 01:07
 1/1 anonim ***** válasza:

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.

2013. dec. 9. 11:17
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!