String -> Obiekt

0

Witam

Mam JPanel PANEL_PL_18
oraz String PAP = "PANEL_PL_18";

Potrzebuję zamienić String PAP tak żeby był rozpoznawany jako JPanel PANEL_PL_18
i żeby można było wykonać coś podobnego:

PAP.add(BUTTON);

Z góry dzięki za odpowiedź

0

Wytłumacz mi sens tego? Gdzie Ty to chcesz użyć- jak? Chcesz dodawać batony do różnych paneli w zależności od nazwy?

0

Z bazy danych ściągam symbole jako tekst- na przykład jak ściągnie 18 to ma coś dodać do panelu PANEL_PL_18

0

Zrób mapę, np:

Map<String, Panel> mapa = cośtam;

mapa.put("PANEL18", panel18);

Panel panel = mapa.get("PANEL18");

0
Adam olololloo napisał(a)

Z bazy danych ściągam symbole jako tekst- na przykład jak ściągnie 18 to ma coś dodać do panelu PANEL_PL_18

A dobre stare ify byc nie mogą?

JPanel PANEL_PL_17
JPanel PANEL_PL_18
JPanel PANEL_PL_19

if(pobrane==17)
{
PANEL_PL_17.add(...);
}
if(pobrane==18)
{
PANEL_PL_18.add(...);
}
if(pobrane==19)
{
PANEL_PL_19.add(...);
}

Albo wybitnie zaawansowana technika programowania switch - case ?:)

0
lipkerson napisał(a)
Adam olololloo napisał(a)

Z bazy danych ściągam symbole jako tekst- na przykład jak ściągnie 18 to ma coś dodać do panelu PANEL_PL_18

A dobre stare ify byc nie mogą?

JPanel PANEL_PL_17
JPanel PANEL_PL_18
JPanel PANEL_PL_19

if(pobrane==17)
{
PANEL_PL_17.add(...);
}
if(pobrane==18)
{
PANEL_PL_18.add(...);
}
if(pobrane==19)
{
PANEL_PL_19.add(...);
}

> 
> Albo wybitnie zaawansowana technika programowania switch - case ?:)






Zrobiłbym tak gdyby nie to że tych paneli będzie bardzo dużo
0

A co jest złego w Mapie? Nie rozumiesz jak działa?

0

Ta Twoja mapa to przerost formy...switch lepszy.

0
Adam olololloo napisał(a)

Z bazy danych ściągam symbole jako tekst- na przykład jak ściągnie 18 to ma coś dodać do panelu PANEL_PL_18

A nie możesz stworzyć tablicy komponentów JPanel i odwoływać się przez indeks tablicy?

0

Spróbowałbym z użyć mapy ale nigdy tego nie używałem, próbowałem użyć tego przykładu ale mi nie wychodzi, poszukam coś na temat map na googlach, nie rozumiem tego: = cośtam;

0

Zwykle używa się HashMap ale można użyć innej. NetBeans podpowie Ci jakie są możliwości jeśli napiszesz:
"Map cośtam = " i naciśniesz CTRL+SPACJA.

package testjava;

import java.util.HashMap;
import java.util.Map;

/**
 * Obiekt który kojarzymy ze stringiem.
 * @author Piotrek
 */
class MójObiekt {
    
    private int numerek;
    
    public MójObiekt(int numerek) {
        this.numerek = numerek;
    }
    
    public String metoda() {
        return "Witando! Tutaj obiekt #" + numerek;
    }
    
}

/**
 * Opakowanie na mapę. Można użyć gołej mapy jeśli mamy malutki projekt.
 * @author Piotrek
 */
class Maper {
    
    private Map<String, MójObiekt> mapa = new HashMap<String, MójObiekt>();
    
    public void dodajObiekt(String nazwa, MójObiekt obiekt) {
        mapa.put(nazwa, obiekt);
    }
    
    public MójObiekt weźObiekt(String nazwa) {
        return mapa.get(nazwa);
    }
}

public class Main {
    
    public static void main(String[] args) {
        Maper maper = new Maper(); // tutaj przechowujemy obiekty
        
        // najpierw wypełniamy mapę - robimy to przy tworzeniu obiektów
        maper.dodajObiekt("pierwszy", new MójObiekt(7));
        maper.dodajObiekt("drugi", new MójObiekt(5));
        maper.dodajObiekt("trzeci", new MójObiekt(3));
        
        // blabla tutaj dużo kodu albo w ogóle całkiem inne miejsce
        
        // dobieramy się do obiektów z mapy
        MójObiekt drugi = maper.weźObiekt("drugi");
        System.out.println(drugi.metoda());
    }
}
0

...

1 użytkowników online, w tym zalogowanych: 0, gości: 1