Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Cool81
    Registrato dal
    Dec 2008
    Messaggi
    160

    Settare in grassetto parte di una stringa

    Il mio problema è che devo settare in grassetto gli ultimi 5 caratteri di una stringa.

    Al momento ho scritto il seguente codice per suddividere la stringa in due parti, ad una delle quali dovrò poi settare il carattere in grassetto.

    codice:
    String tel = c.getTel();
    String part1 = tel.substring(0, (tel.length()-5));
    String part2 = tel.substring((tel.length()-5), tel.length());
    qui devo settare in grassetto part2

    codice:
    tel = part1+part2;
    Non sto riuscendo a capire come settare il carattere grassetto per la stringa part2, qualcuno mi può illuminare?
    Thanks!!!!

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

    Re: Settare in grassetto parte di una stringa

    Originariamente inviato da Cool81
    qui devo settare in grassetto part2
    Senza altre precisazioni (che non hai fatto), non ha senso quello che hai chiesto. Perché il "grassetto" (come qualunque altro stile di formattazione) ha senso solo nel contesto di un qualche linguaggio o formato in cui non c'è solo testo "puro" ma anche la possibilità di descrivere gli stili. Esempio in HTML, RTF o altri linguaggi/formati simili.
    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 Cool81
    Registrato dal
    Dec 2008
    Messaggi
    160
    Scusa, non ho capito quello che mi hai scritto, però provo cmq a spiegarmi meglio.

    In un'applicazione desktop, ho una tabella con due colonne (Nome e Telefono).

    Per implemente uso una TableModel che estende la classe AbstractTableModel.

    Nel metodo che mi setta il contenuto di una cella ho il seguente codice:

    codice:
    //Ritorno il contenuto di una cella
            public Object getValueAt(int row, int col) {
    
                //Seleziona il contatto
                Contact c = resultContatti.get(row); 
                switch (col){
                    case 0: return c.getName();
                    case 1: return c.getTel();
                }
                return null;
            }
    Quindi adesso c.getTel() è una stringa. Mi occorre settare gli ultimi 5 caratteri di questa stringa in grassetto.

    Essendo appunto una stringa pensavo di poter lavorare direttamente con essa, ma forse mi sbaglio?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Cool81
    Essendo appunto una stringa pensavo di poter lavorare direttamente con essa, ma forse mi sbaglio?
    Ma ti ripeto, e parlo in generale, che "grassetto" o qualunque altro stile non ha senso se parli solo di "caratteri" o "stringhe".
    Gli stili di formattazione hanno senso solo nel contesto di un qualche linguaggio, formato, sistema di disegno o dispositivo hardware in cui è possibile descrivere/memorizzare anche degli "attributi" relativi al testo.

    E torniamo alla tua questione. Il tuo testo lo visualizzi in una cella di un JTable --> JTable è basato sui "renderer" --> I renderer tipicamente sono dei JLabel --> JLabel è in grado di renderizzare contenuto HTML (funzionalità in generale anche di altri componenti Swing).

    Quindi ad un JLabel puoi settare una stringa del tipo: "<html>ciao questo è grassetto</html>".

    Ed ecco il "contesto", che in questo caso è HTML.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di Cool81
    Registrato dal
    Dec 2008
    Messaggi
    160
    Il tuo testo lo visualizzi in una cella di un JTable --> JTable è basato sui "renderer" --> I renderer tipicamente sono dei JLabel --> JLabel è in grado di renderizzare contenuto HTML (funzionalità in generale anche di altri componenti Swing).
    Ma se io per renderizzare il contenuto delle celle della tabella utilizzo questo metodo del mio TableModel:

    codice:
    //Ritorno il contenuto di una cella
            public Object getValueAt(int row, int col) {
    
                //Seleziona il contatto
                Contact c = resultContatti.get(row);
                switch (col){
                    case 0: return c.getName();
                    case 1: return c.getTel();
                }
                return null;
            }
    Non è sulla stringa 'c.getTel()' che devo lavorare?

    Da quello che hai scritto tu, se nn ho capito male, renderizza questa stringa nella cella come se fosse il testo di una jlabel, ma io dove e come posso lavorare su questa jlabel?


    Scusami, ma non sto proprio riuscendo a capire.

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Cool81
    Non è sulla stringa 'c.getTel()' che devo lavorare?

    Da quello che hai scritto tu, se nn ho capito male, renderizza questa stringa nella cella come se fosse il testo di una jlabel, ma io dove e come posso lavorare su questa jlabel?
    Scusa ... hai postato del codice in cui ottieni un part1 e un part2 e vuoi che part2 sia "grassetto" (visualizzato nella cella).

    Mi sembra abbastanza semplice fare:

    return "<html>" + part1 + "" + part2 + "</html>";

    quando nel getValueAt() viene chiesta quella cella.


    P.S. nota che per Swing non è obbligatorio avere </html> al fondo ... l'ho messo solo per completezza/chiarezza.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it L'avatar di Cool81
    Registrato dal
    Dec 2008
    Messaggi
    160
    return "<html>" + part1 + "" + part2 + "</html>";

    Grazie. Stamattina, forse con la mente più lucida, ho riletto i tuoi consigli e applicato la tua soluzione.
    Nel metodo che mi restituisce il valore di quella cella richiamo il seguente metodo che mi ritorna quello che mi ha suggerito tu:

    codice:
    public String editTel(String tel){          
    
    String part1 = tel.substring(0, (tel.length()-5));         
    String part2 = tel.substring((tel.length()-5), tel.length());         
    return "<html>" + part1 + "" + part2 + "</html>";       
    }
    E così funziona. Eccetto naturalmente un controllo sulla stringa che magari a volte contiene spazi e caratteri che non sono numeri.

    Grazie per l'ennesima risoluzione!
    Ma una domanda: l'editor ed il render di una cella in quali situazione per esempio è gousto usarli allora?

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Cool81
    Ma una domanda: l'editor ed il render di una cella in quali situazione per esempio è gousto usarli allora?
    Intendi dire quando si deve implementare un apposito renderer/editor? Quando devi visualizzare/gestire una cella con un contenuto particolare, ad esempio una cella che mostra icona+testo oppure un pulsante o altro di più complesso.
    Se si vuole solo mettere come editor ad esempio un combo box è più semplice perché basta usare DefaultCellEditor.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Anbid, il trucchetto di scrivere in html si può fare anche con il jEditorPane?
    il fatto è che io devo fare in modo che il testo diventi di questo tipo:

    parte1 + parte2(in grassetto) + parte3

    Spezzettare la stringa in 3 parti non mi dà problema, ma come la scrivo la parte 2 formattata?

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da TheWarLord
    il trucchetto di scrivere in html si può fare anche con il jEditorPane?
    JEditorPane supporta HTML o RTF. Ma c'è anche JTextPane che estende JEditorPane ma impone alcune restrizioni.

    Se devi gestire uno dei due formati sopra indicati, usa JEditorPane. Se ti basta semplicemente avere del testo "stilizzato" puoi usare JTextPane. (tra i miei Java Examples sezione Text components c'è l'esempio StyledText.java).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.