Domanda

Prova di creare un'applicazione GUI in Java / Swing. Sono abituato principalmente a "dipingere". Le GUI sul lato Windows con strumenti come VB (o, per essere più precisi, Gupta SQLWindows ... si chiedono quante persone sanno di cosa si tratta ;-)).

Non riesco a trovare un equivalente di una casella di gruppo in Swing ...

Con una casella di gruppo, hai una casella quadrata (di solito con un titolo) attorno a un paio di widget correlati. Un esempio è una casella di gruppo attorno ad alcuni pulsanti di opzione (con il titolo che spiega di cosa trattano i pulsanti di opzione, ad esempio Casella di gruppo intitolata "Sesso" con "pulsanti" maschili "e" pulsanti "femminili".

Ho cercato un po 'in giro ... L'unico modo che ho trovato è stato aggiungere un sottosquadro, impostare il bordo sul sottosquadro e quindi aggiungere tutti i widget nel " gruppo " al riquadro secondario. Esiste un modo più elegante per farlo?

È stato utile?

Soluzione

Crea un JPanel e aggiungi i tuoi pulsanti radio. Non dimenticare di impostare il layout di JPanel su qualcosa di appropriato.

Quindi chiama panel.setBorder(BorderFactory.createTitledBorder(name));;/code>

Altri suggerimenti

Altri hanno già commesso degli acquisti su JPanel e l'utilizzo di un TitledBorder, va bene.

Tuttavia, quando si gioca con Swing LayoutManager, potrebbe risultare fastidioso che i componenti in JPanel diversi non possano allinearsi correttamente (ogni pannello ha il proprio LayoutManager).

Per questo motivo, è una buona pratica (controlla "JGoodies" sul Web per maggiori dettagli) nelle GUI di Swing per NON usare TitledBorders ma piuttosto gruppi separati di componenti in un JPanel da un JLabel seguito da un JSeparator orizzontale.

Ref. " First Aid for Swing "

Una casella di gruppo è solo un insieme di "widget raggruppati logicamente". Questo nel mondo swing è un JPanel .

Aggiungi i tuoi widget a un JPanel .

Imposta il tipo di bordo su "Bordo con titolo" e assegna il titolo, lo stesso del nome del "frame" VB6.

Voila. Hai la tua casella di gruppo.

Ecco una citazione dal javadocs JRadioButton da quando hai richiamato i pulsanti di opzione.

  

Un'implementazione di un pulsante di opzione: un elemento che può essere selezionato o deselezionato e che mostra il suo stato all'utente. Utilizzato con un oggetto ButtonGroup per creare un gruppo di pulsanti in cui è possibile selezionare solo un pulsante alla volta. (Crea un oggetto ButtonGroup e usa il suo metodo add per includere gli oggetti JRadioButton nel gruppo.)

     

Nota: l'oggetto ButtonGroup è un raggruppamento logico, non un raggruppamento fisico. Per creare un pannello pulsanti, è comunque necessario creare un JPanel o un oggetto contenitore simile e aggiungere un bordo ad esso per disattivarlo dai componenti circostanti.

Non AFAIK, almeno non con widget swing standard.

In VB hai un widget di gruppo, che è essenzialmente un pannello + bordo.

In Swing hai un JPanel che è il widget contenitore e crei e imposti un oggetto bordo solo se ne hai bisogno. Si può sostenere che in un modo che è più elegante poiché non si paga per qualcosa che non si utilizza (ad esempio, bordo)

Come ha detto David Koelle sull'impostazione del bordo tramite il codice Java, puoi anche ottenere risultati simili in modalità Designer.

 inserisci qui la descrizione dell'immagine

Sto rispondendo in base al commento di Uri che spiega cosa significava OP per Group Box :

  

Uri: penso che significhi il gruppo di controllo che vedi in molte finestre di dialogo, dove hai un quadrato attorno a un mucchio di widget come i pulsanti di opzione, ad esempio.

Per quanto ne so, ogni JComponent può impostare un bordo per se stesso, quindi non è necessario un secondo pannello.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top