Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543

    setPreferredSize in un BorderLayout

    Ciao ragazzi, ho questa classe che estende JButton così composta
    codice:
    ImageIcon i = new ImageIcon("img/GUI/buttons/curr.png");
    
    this.setPreferredSize(new Dimension(i.getIconWidth(), i.getIconHeight()));
    this.setMaximumSize(new Dimension(i.getIconWidth(), i.getIconHeight()));
    this.setSize(new Dimension(i.getIconWidth(), i.getIconHeight()));
    	
    this.setIcon(i);
    this.setRolloverIcon(new ImageIcon("img/GUI/buttons/curr_h.png"));
    this.setPressedIcon(new ImageIcon("img/GUI/buttons/curr_c.png"));
    
    this.setOpaque(true);
    this.setBackground(Color.RED);
    in poche parole è un JButton senza testo con la sola icona che mi interessa. Il problema è che inserendolo in un JPanel con BorderLayout in posizione centrale, mi occupa tutto lo spazio e io non vorrei proprio questa soluzione. vorrei che il pulsante fosse centrato ma non che occupi tutto lo spazio. Come risolvo? Inoltre, è possibile stabilire dei margini al layout? in pratica ho questo
    codice:
     __________________________________________________
    |                                                  |
    |[pulsante1] [       pulsante2        ] [pulsante3]|
    |__________________________________________________|
    Ma vorrei avere questo
    codice:
     __________________________________________________
    |                                                  |
    | [pulsante1]        [pulsante2]       [pulsante3] |
    |__________________________________________________|
    Vorrei che pulsante1 e pulsante3 siano rispettivamente allineati a WEST e EAST ma con un margini di 5-10 pixel dal bordo della finestra e che pulsante2 sia centrale ma che non occupi solo il minimo necessario per essere visualizzato

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: setPreferredSize in un BorderLayout

    Originariamente inviato da oronze
    Il problema è che inserendolo in un JPanel con BorderLayout in posizione centrale, mi occupa tutto lo spazio e io non vorrei proprio questa soluzione. vorrei che il pulsante fosse centrato ma non che occupi tutto lo spazio. Come risolvo?
    Se ti basta "fissare" la dimensione del margine attorno al pulsante (quindi non la dimensione del pulsante che continua a espandersi il più possibile), metti in CENTER un JPanel che ha un "empty" border di tot margini e questo JPanel ha a sua volta un BorderLayout nel cui CENTER ci metti il pulsante.

    Se vuoi fissare un preferred size (o comunque tenere il suo predefinito) al pulsante e fare in modo che stia al centro avendo tutti i margini possibili/variabili, basta che in CENTER ci metti un JPanel con un GridBagLayout. Anche senza constraint particolari, mettere 1 solo componente nel GBL fa sì che stia al centro alla sua dimensione.

    Originariamente inviato da oronze
    Inoltre, è possibile stabilire dei margini al layout?
    In generale no, se non è il layout stesso a prevederlo (es. GridLayout ha dei "gap" oriz./vert. che sono impostabili).

    Sono i componenti (tutti quelli Swing, non gli AWT) che possono avere un Border assegnato.

    E comunque in genere basta "giocare" sul fatto di "inscatolare" il componente dentro qualcos'altro che magari ha dei bordi particolari. Perché JButton ha già un Border predefinito ... proprio quello che mostra il suo bordo e se lo togli/sostituisci .... non è più lui!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    ti ringrazio per i tuoi consigli come sempre molto utili. Detto ciò, il pulsante sfasava perchè mi ero dimenticato a quello centrale di fissare preferredsize...il codice l'avevo postato prendendo un altro pulsante...
    codice:
    		JPanel s = new JPanel();
    		s.setOpaque(false);
    		s.add(new Prev());
    
    		JPanel d = new JPanel();
    		d.setOpaque(false);
    		d.add(new Next());
    
    		JPanel c = new JPanel();
    		c.setOpaque(false);
    		c.add(new Curr());
    
    		this.add(s, BorderLayout.WEST);
    		this.add(c, BorderLayout.CENTER);
    		this.add(d, BorderLayout.EAST);
    ho risolto così e lo spazio tra i pulsanti e il BorderLayout si è messo da solo e mi va benissimo così com'è! Grazie 1000

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

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.