Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    103

    Spostare le label su JPanel

    Salve,
    ho un problema nello spostare delle label su cui è appiccicata un'immagine. Qui vi do il codice:

    campo.getContentPane().remove(giocatore[k].labelgioc);
    giocatore[k].labelgioc.setLocation(posx, posy);
    campo.getContentPane().add(giocatore[k].labelgioc);


    In pratica la label viene sempre attaccata al solito posto, in alto a destra del pannello, e non alla posizione indicata da posx, posy.
    Avete un suggerimento?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Che ci dici del LayoutManager del pannello?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    103
    Cosa intendi per LayoutManager?
    Cosa dovrei fare?

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Per default tutti i pannello hanno un LayoutManager impostato. Nello specifico, hanno impostato un BorderLayout.
    Se non hai mai sentito parlare dei LayoutManager allora dovresti consultare la sezione dedicata nei tutorial della Sun, dove viene spiegato perchè sono usati e a cosa servono.

    Per posizionare gli oggetti a proprio piacimento è necessario rinunciare ai LayoutManager, togliendoli di mezzo manualmente. Per togliere di mezzo il LayoutManager è sufficiente impostarlo a null utilizzando il metodo setLayout() del pannello.

    Questo argomento è stato dibattuto moltissime volte anche su questo forum, quindi con una ricerca dovresti trovare materiale sufficiente per poterti districare.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    103
    Ti ringrazio del consiglio,
    ma ora che ho capito cosa volevi dire ti dico che avevo inizialmente settato il LayoutManager come xYLayout1 e sto pensando a questo punto di passare al GridBagLayout ed un pannello con xYLayout per una serie di bottoni da posizionare a cui aggiungo opportuni eventi.
    Da quanto ne ho letto mi sono fatto un'idea che la griglia da creare deve essere quadrata: tu sai se è possibile crearla anche rettangolare?
    Marco

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Che io sappia non è necessario che sia quadrata.
    Hai anche a disposizione il GridLayout che ti permette di definire il numero di righe e di colonne.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    103
    Ho provato a mettere il LayoutManager come GridLayout (settando il GridBagConstraints) ed un'altra volta null ma non sono riuscito a far spostare le label: in realtà quello che vorrei creare è un pannello su cui ci devo mettere la JLabel per attaccarci uno sfondo e su di questo sfondo devo far muovere le label.
    Secondo te si può creare un pannello GridLayout e su di esso metterci la label con lo sfondo ed infine le label da spostare?

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Io credo che il modo più semplice per procedere sia quello di creare una classe che estende JPanel, nella quale viene ridefinito il metodo paintComponent() in modo da disegnare lo sfondo sul pannello (Oggetto Graphics, metodo drawImage() ). Quindi impostare a null il LayoutManager del pannello in modo che la JLabel che vi viene inserita possa essere spostata a piacimento sul pannello.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    103
    Salve,
    mi sapete spiegare perché questo programma non mi carica la label?

    public class CAMPO extends JFrame {
    ImageIcon fig= new ImageIcon("images/14.png");
    JLabel label= new JLabel(fig);
    public void init(){
    setBackground(Color.cyan);
    }
    public void carica(){
    label.setLocation(400,300);
    this.getContentPane().add(label);
    }
    public static void main(String[] args){
    CAMPO c = new CAMPO();
    c.show();
    c.carica();
    }

    public void paint(Graphics g){
    g.setColor(Color.white);
    // g.drawRect(50,50,960,600);
    g.setColor(Color.green);
    g.fillRect(50,50,960,600);
    g.setColor(Color.white);
    g.drawRect(50,300,60,100);
    g.drawRect(950,300,60,100);
    g.drawRect(50,180,200,340);
    g.drawRect(810,180,200,340);
    g.drawLine(500,50,500,650);
    g.drawOval(410, 250, 180, 180);
    g.drawArc(785,310,80,70,-115,-125);
    g.drawArc(190,310,80,70,-60,120);
    g.drawArc(45,40,20,50,30,-155);
    }
    }

    Grazie

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Non è che non te la carica: non te la visualizza... perchè richiami il metodo show() (che tra l'altro è deprecato) prima di aggiungere la label... devi richiamarlo dopo.

    Oltretutto è inutile che tu definisca la posizione della Label: non hai tolto il LayoutManager che quindi la posizionerà dove vuole lui.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.