[jLabel] problem z wyswietlaniem

0

Chcialbym uzyskac taki efekt:
http://cachei.gamedesire.com/g_help/pl/planning/img/deklaracja.jpg
ale nie umiem (karty wyswietlaja mi sie jedna obok drugiej ale kazda kolejna pod spodem a chce zeby ostatnia utworzona byla na wierzchu tak jak na rys) jakiej funkcji powienienem uzyc? Z gory dzieki za pomoc :-|

public void ObrazyGracz1() {
        JLabel[] lab = new JLabel[12];
        lab[i] = new JLabel();
        jPanel1.add(lab[i]);
        lab[i].setBounds(50 + (20 * h), 50, 80, 120);

...
0

Aby zdefiniować swój rozkład elementów musisz zrobić to ręcznie ustawiając pole Location danej kontrolki.

0

musisz dodać w odwrotnej kolejności pierwsza dodana jest pierwsza na wierzchu :)

0

no wlasnie probowalem tak zrobic ale nie dalo rady zawsze kolejna dodana jest pod spodem...
a gdy uzywam zamiast labeli buttony jest ok dopoki nie najade myszka... wtedy pokazuje mi sie ta karta na ktora najade kursorem... dlatego chce to zrobic z jLabelami... help

0

kolejna dodana jest ostatnia dodana wiec musisz wszystko przeładować albo z gory ustalić miejsce na daną kartę

0

okreslam gdzie ma byc kolejna karta.. ale wyrzuca mi blad...

public void ObrazyGracz1() {
         setLayout (null);
        JLabel[] lab = new JLabel[12];
        lab[i] = new JLabel();
        lab[0].setSize(80,120);
        lab[0].setLocation(0,0);
        lab[1].setSize(80,120);
        lab[1].setLocation(80,0);
        jPanel1.add(lab[i]);

gdy dodaje lab[0] jest ok wyswietla ale gdy dodaje lab[1] i kolejne rozwala mi program... cos pominalem?

a gdy daje

lab[i].setSize(80,120);
        lab[i].setLocation(50+(30*h), 0);
        jPanel1.add(lab[i]);

to nadal kolejna dodana pokazuje sie pod spodem...

0

eh no niestety nikt nie umie rozwiazac problemu... szkoda...

0

Ten kod

public void ObrazyGracz1() {
         setLayout (null);
        JLabel[] lab = new JLabel[12];
        lab[i] = new JLabel();
        lab[0].setSize(80,120);
        lab[0].setLocation(0,0);
        lab[1].setSize(80,120);
        lab[1].setLocation(80,0);
        jPanel1.add(lab[i]);

to zupełna głupota:

  • wykorzystywana jest tajemnicza zmienna i, skoro kompilator się nie czepia, tzn. że i jest polem w klasie, jaka jest wartośc i?
  • tworzysz tablicę do przechowywania obiektów JLabel, masz w niej na starcie 12 nulli, tylko jeden zamieniasz na JLabel
  • co najmniej jedno z wywołań tab[0].... lub tab[1].... jest błędne (jeżeli i<>0 oraz i<>1, to oba są błędne,).
0
  public void ObrazyGracz1() {

    
        JLabel[] lab = new JLabel[70]; // ilosc 70 wstawione testowo
        lab[i] = new JLabel();
        lab[i].setSize(80, 120);
        lab[i].setLocation(70 + (24 * skokobrazka1), 100);
        jPanel1.add(lab[i]);



        switch (x) {
            case 0:
                lab[i].setIcon(new ImageIcon("09_pik.jpg"));
                break;

tak wyglada kod obecnie
i=0;

0

Obecny kod, to nieco mniejsza głupota:

  • wykorzystywana jest tajemnicza zmienna x, skoro kompilator się nie czepia, tzn. że x jest polem w klasie, jaka jest wartośc x?
  • tworzysz tablicę do przechowywania obiektów JLabel, masz w niej na starcie 12 nulli, tylko jeden zamieniasz na JLabel
0

x to losowo wybrana karta z funkcij Losuj() :P
czyli pokolei musze dodawac nowe jLabele tak jak pierwszy dodalem?

0

stworz w petli na starcie wszystkie komponenty by nie byly nulami a potem operuj na nich

JLabel[] lab = new JLabel[70]; // ilosc 70 wstawione testowo
for (int i=0;i<=69;i++) {        
        lab[i] = new JLabel();
}
0

(karty wyswietlaja mi sie jedna obok drugiej ale kazda kolejna pod spodem a chce zeby ostatnia utworzona byla na wierzchu tak jak na rys) jakiej funkcji powienienem uzyc?

Trochę strzelam w ciemno, ale spróbuj dla każdej JLabel wywołać metodę setOpaque(boolean x)
lab[i].setOpaque(true);

0

Strzal w 10 [!!!] dzieki wielkie :) [browar]

ale jak zwykle jest ale :P bo po przejsciu do nastepnego "gracza" karty powracaja do "normalnego" ukladu...

0

a jak wyglada teraz kod? :)

0
    public void ObrazyGracz2() {
        JLabel[] lab = new JLabel[70];
        lab[i] = new JLabel();
        lab[i].setSize(80, 120);
        lab[i].setLocation(450 + (24 * skokobrazka2), 100);
        jPanel1.add(lab[i]);
        lab[i].setOpaque(true);


        switch (x) {
            case 0:
                lab[i].setIcon(new ImageIcon("09_pik.jpg"));
                break;

...

 case 23:
                lab[i].setIcon(new ImageIcon("as_karo.jpg"));
                break;

        }
        i++;
    }
0

przy kazdym odwołaniu do ObrazyGracz2() tworzysz tablice ale tylko używasz jednego obiektu? pisałem Ci byś zadeklarował może z góry tablice i do niej sie odwoływał :) tablica Twoja traci ważność po wyjściu z metody. Normalna zmienna powinna być usunięta nie wiem jak jest z obiektami pewnie trzyma go jakaś referencja

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