Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655

    Stampare una stringa al centro di un JOptionPane

    Ciao a tutti, ho creato un Jframe che quando viene cliccato su un suo bottone compare un JOptionPane con una scritta.

    Il comando per fare comparire il JOptionPane è:
    codice:
    JOptionPane.showMessageDialog(getContentPane(),"Connessione al Server effettuata con successo\nBuon Lavoro!","Connessione effettuata",JOptionPane.PLAIN_MESSAGE);
    La seconda riga però introdotta da \nBuon Lavoro! compare però all'inizio del secondo rigo del JOptionPane, io invece la vorrei far comparire esattamente al centro.

    Come posso fare?

    Fatemi sapere,grazie ciaooo!

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

    Re: Stampare una stringa al centro di un JOptionPane

    Originariamente inviato da melmar20
    Come posso fare?
    Usa le potenzialità di rendering di codice HTML dei componenti Swing. Metti una stringa:

    "<html><center>riga1
    riga2</center></html>"
    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
    Registrato dal
    Jan 2007
    Messaggi
    655
    è inutile ho provato con i tag hatml ma non funziona!! non sò per quale motivo!!

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655
    Dunque dopo estenuanti tentativi sono arrivato quasi alla soluzione dell'arcano!!!


    in pratica se scrivo:
    codice:
    JOptionPane.showMessageDialog(getContentPane(),"<html><center>Arrivederci</center></html>","Arrivederci",JOptionPane.PLAIN_MESSAGE);
    La stringa ARRIVEDERCI non mi viene stampata al centro della finestra, ma alla sinistra, come se non avessi aggiunto i tag html!!

    Se invece scrivo:
    codice:
    JOptionPane.showMessageDialog(getContentPane(),"<html>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    <center>Arrivederci</center></html>","Arrivederci",JOptionPane.PLAIN_MESSAGE);
    la stringa ARRIVEDERCI mi viene stampata al rigo sotto e perfettamente al centro della stringa xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.

    Ora come posso ovviare a sta cosa??

    Esiste un altro tag che mi fà stampare una stringa al centro della finsestra?

  5. #5
    ciao ho pensato ad una soluzione usando l'html (il che non vuol dire che sia l'unica o che sia la migliore), metti la scritta dentro un paragrafo centrato e dimensionato in modo fisso, ad esempio:

    codice:
    JOptionPane.showMessageDialog(getContentPane(),"<html><p align='center' width='250'>Arrivederci</p></html>","Arrivederci",JOptionPane.PLAIN_MESSAGE);

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655
    Grandioso!!! Funziona alla perfezione!!

    GRazie mille!!

    Ma perchè con il tag <central> non funzionava?

  7. #7
    Io ci provo ma non garantisco che sia comprensibile (per problemi espressivi miei ):

    il problema viene creato dal modo in cui la stringa "Arrivederci" viene messa nella MessageDialog.

    La stringa viene messa in una Label o simili (penso una JLabel), tale Label viene messa sul frame della dialog, viene posizionata a sinistra e le vengono date come dimensioni quelle minime necessarie a contenere la stringa di testo, nota bene che con l'html non puoi cambiare la posizione della label nel frame, quella è una cosa che dipende dal java.

    Se tu come testo metti "<html><center>Arrivederci</center></html>" la Label avrà come dimensioni quelle necessarie a farci entrare la parola Arrivederci (i tag html presenti non contano visto che non occupano spazio), quindi anche se c'è il <center> la dimensione massima della Label sarà uguale a quella della parola e la vedrai a sinistra perché la label è messa a sinistra.

    Con il paragrafo a dimensione fissa invece tu rendi la Label più grande (lunga) della scritta e quindi noterai che Arrivederci è allineato al centro della Label, se poi le dimensioni del paragrafo sono generose la Label sarà grande quanto tutto il frame (circa) e la scritta sembrerà centrata all'intera finestra.

    Prova a mettere width=200 o width=300 e vedrai le differenze.


    Spero di essere stato almeno parzialmente comprensibile...

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.