Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    JTextArea con lineWrap e WordWrap

    Ciao a tutti


    Potreste spiegarmi come funziona la JTextArea con lineWrap e WordWrap



    Praticamente io prelevo un campo nominativo dal db e lo visualizzo in una JTextArea
    Avrei pero' l'esigenza che questa Area permettesse la visualizzazione su due righe da 16 caratteri (come se fosse un display)

    Pero se scrivo " pippo pippo pippo pippo pippo pi " non capisco perchè avendo impostato linewrap e wordwrap su true

    mi compare la scrollbar verticale e non mi mantiene la visualizzazione sulle due righe



    Lo stesso mi succede quando la stringa è più corta ed io per completare i 32 caratteri disponibili aggiungo spazi vuoti

    con la seguente riga di codice:

    if(nominativo.length()< 32){
    for (int i=nominativo.length()+1; i<=32; i++){
    nominativo = nominativo.concat("\b");


    Qualcuno può aiutarmi a capire come ottenere la visualizzazione solo su due righe da 16 ognugna ???

  2. #2
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Perchè non provi a postare tutto il codice coinvolto?

  3. #3
    Ok...

    Parte relativa al prelievo da database:

    // Connessione al Database
    try {
    int go=0;
    String inputquery = "SELECT * FROM utenti";

    MySQLConnection db_interface = new MySQLConnection();
    db_interface.set_connection_parameters("provadb", "localhost", "provauser", "provapass", "3306");
    go=db_interface.connect();
    if(go!=1){
    JOptionPane.showMessageDialog(null, "Connessione al Database non riuscita...");

    }
    else {
    query = db_interface.query_last_to_Vector(inputquery);
    }
    db_interface.close_connection();
    } catch (Exception ex) {
    ex.printStackTrace();
    }

    *************************************************

    Parte in cui assegno la stringa prelevata alla JTextArea:


    jTextArea1.setText(query.get(1).toString().toUpper Case());
    jTextArea1.setBackground(new java.awt.Color(0, 204, 204));
    jTextArea1.setColumns(16);
    jTextArea1.setEditable(false);
    jTextArea1.setFont(new java.awt.Font("Arial Rounded MT Bold", 1, 18));
    jTextArea1.setLineWrap(true);
    jTextArea1.setRows(2);
    jTextArea1.setWrapStyleWord(true);
    jTextArea1.setAutoscrolls(false);
    jTextArea1.setBorder(javax.swing.BorderFactory.cre ateMatteBorder(3, 3, 3, 3, new java.awt.Color(0, 0, 0)));
    jTextArea1.setFocusable(false);
    jScrollPane1.setViewportView(jTextArea1);
    jTextArea1.addFocusListener(new java.awt.event.FocusAdapter() {
    public void focusLost(java.awt.event.FocusEvent evt) {
    jTextArea1FocusLost(evt);
    }
    });





    ************************************************** ***

    Parte in cui aggiungo gli spazi nel caso in cui la stringa non arrivi a 32 caratteri

    private void jTextArea1FocusLost(java.awt.event.FocusEvent evt) {

    String nominativo = jTextArea1.getText();

    if(nominativo.length()< 32){
    for (int i=nominativo.length()+1; i<=32; i++){
    nominativo = nominativo.concat("\b");
    }

    jTextArea1.setText(nominativo);
    }
    }
    }


    *****************************************

    Praticamente invece di visualizzarmi le due righe come da me settato ... mi compare la scrollbar verticale e mi scompone la JTextArea ... spezzettandomi anche la stringa in modo strano senza rispettare le due righe da 16 caratteri... divrebbe visualizzarmi cosi:

    ****************************** *********************
    * PRIMA RIGA * * JIG ROBOT *
    * * * *
    * SECONDA RIGA * * D'ACCIAIO *
    * **************************** *********************



    Spero di esser stato più chiaro !!! Grazie !!!

  4. #4
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Ok, ma la prossima volta utilizza i tag CODE, come da regolamento.

    In questo momento non ho la possibilità di fare delle prove, però:

    - io toglierei questa istruzione:

    codice:
    jTextArea1.setWrapStyleWord(true);
    Controlla la documentazione, ma tu mi sembri interessato a lasciare la proprietà a false (che è il valore di default);

    - non vedo che necessità hai di inserire la JTextArea in uno scroll pane, se non vuoi le barre di scorrimento;

    - se la barra non è editabile, a cosa serve aggiungere i blank alla fine? Potrebbe essere utile se, ad esempio, dovrai memorizzare tale valore in un DB che prevede una lunghezza fissa... ma a questo punto non è più sensato aggiungere gli spazi solo quando dovrai prelevare il testo contenuto?

    - l'area di testo non è focusable... sicuro che l'evento focusLost() funzioni?

  5. #5
    Hai ragione scusa per la mancanza.

    Ok ti aggiungo altre informazioni


    Praticamente io devo simulare un Display a due righe di 16 caratteri come quelli delle centraline per intenderci

    Prendo delle informazioni da un db tipo il nominativo ... che deve essere massimo di 32 caratteri (questo vincolo è necessario perchè poi vado a scrivere in una memoria quindi devo riempire esattamente 32 byte ... di caratteri se la stringa è piena o di caratteri + spazi vuoti se la stringa non raggiunge i 32 )


    Chiaramente nel caso io abbia una stringa del genere : "JIG ROBOT D'ACCIAIO" che supera i 16 caratteri ... deve distribuirla sulle due righe cosi: "JIG ROBOT" prima riga "D'ACCIAIO" seconda riga.




    pur impostando 16 caratteri per riga nella TextArea
    jTextArea1.setColumns(16);

    mi scrive " JIG ROBOT D'ACCIAIO" tutto su una riga ... se poi inserisco "QQQQQQQQQQQQQQQQQQQ " stesso numero di caratteri di "JIG ROBOT D'ACCIAIO"
    me la suddivide correttamente ???

    A questo punto non so se TextArea fa al caso mio ... o si potrebbe impostare un document come per le TextField... o se esiste qualche metodo che faccia al mio caso ... ci sto sbattendo la testa da due giorni ma senza risultati

    PS.: L'aggiunta degli spazi vuoti sembra funzionare anche se non son sicuro sul carattere che concateno:
    nominativo = nominativo.concat("\b")??? perchè poi nella TextArea mi escono dei quadratini anzichè spazi bianchi!!!

  6. #6
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    L'append degli "spazi" non funziona perchè non usi il carattere corretto: \b è l'escape character per il backspace, per il blank devi usare " "... ossia il carattere di spazio.

    Il problema che mi sembra tu non abbia valutato è che non hai affatto la garanzia che due righe di 16 caratteri siano sufficienti a contenerne una stringa di 32... ad esempio, se tudovessi visualizzare
    "abc def ghi jkl mno pqr stu vwx yz"
    in base al criterio che hai previsto, la textarea mostrerebbe (in prima riga trovi gli indici della colonna):

    codice:
    0123456789ABCDEF
    abc def ghi jkl
    mno pqr stu vwx
    yz

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.