In che modo il testo può essere "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" che eccede la larghezza del marchio? Ho provato a racchiudere il testo in tag html ma senza fortuna. Si prega di dare i vostri suggerimenti.Come riassumere testo in JLabel?
risposta
Un approccio comune è quello di non utilizzare uno JLabel
e utilizzare invece un JTextArea
con il ritorno a capo automatico e il ritorno a capo attivato. Potresti quindi decorare JTextArea per renderlo simile a una JLabel (bordo, colore di sfondo, ecc.). [Modificato per includere la riga per completezza per il commento di DSquare]
Un altro approccio consiste nell'utilizzare l'HTML nell'etichetta, come seen here. Gli avvertimenti ci sono
potrebbe essere necessario prendersi cura di certi personaggi che HTML può interpretare/convertire da testo semplice
Calling
myLabel.getText()
conterrà ora HTML (con possibilmente fuggiti e/o convertito caratteri a causa di # 1
EDIT: Ecco un esempio per l'approccio JTextArea:
import javax.swing.*;
public class JLabelLongTextDemo implements Runnable
{
public static void main(String args[])
{
SwingUtilities.invokeLater(new JLabelLongTextDemo());
}
public void run()
{
JLabel label = new JLabel("Hello");
String text = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
// String text = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +
// "quick brown fox jumped over the lazy dog.";
JTextArea textArea = new JTextArea(2, 20);
textArea.setText(text);
textArea.setWrapStyleWord(true);
textArea.setLineWrap(true);
textArea.setOpaque(false);
textArea.setEditable(false);
textArea.setFocusable(false);
textArea.setBackground(UIManager.getColor("Label.background"));
textArea.setFont(UIManager.getFont("Label.font"));
textArea.setBorder(UIManager.getBorder("Label.border"));
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(label, BorderLayout.NORTH);
frame.getContentPane().add(textArea, BorderLayout.CENTER);
frame.setSize(100,200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
In particolare, non desidera un comportamento a capo automatico ma un carattere a caratteri zero. Ciò significa che un JTextArea con 'setLineWrap (true)' ma 'setWrapStyleWord (false)' funzionerebbe. – DSquare
@DSquare: hai ragione riguardo al line-wrap. Tuttavia, l'uso del word-wrap sarebbe anche necessario in modo che tutte le altre parole che non sono più lunghe della lunghezza dell'etichetta (che probabilmente sarebbe la maggior parte di esse) siano ancora avvolte in modo appropriato. Senza di esso, si rompono senza cerimonie e la fine della lunghezza dell'etichetta, che è probabilmente indesiderata (ma non menzionata nel PO). Imposta il word-wrap su false nel mio esempio per vedere cosa intendo. – splungebob
Sono d'accordo sul fatto che il wrap è generalmente auspicabile, ma non è questo il problema qui. Poiché il wrap di parola sovrascrive il comportamento di default del carattere, non è specificamente richiesto da OP. Si prega di impostare 'String text =" aaa ... aaa "' (senza spazi, il caso in questione), e vedere come il codice non risolve il problema. – DSquare
- 1. Testo allineato in JLabel
- 2. riassumere il testo o semplificare il testo
- 3. Allineare il testo in JLabel a destra
- 4. JLabel html testo ignora setFont
- 5. Rendere dinamico il testo in una JLabel
- 6. Selezione del testo da una JLabel?
- 7. JLabel sull'evento di modifica del testo
- 8. Come aggiungere JLabel a JEditorPane?
- 9. Rails 3: Come riassumere record
- 10. JLabel con testo HTML avvolto come client JScrollPane
- 11. Come riassumere gli elementi dict
- 12. Due icone in una JLabel?
- 13. Cambiare il colore di un testo in una JLabel
- 14. Visualizza BMP in JLabel
- 15. R: come riassumere in base a più criteri e riassumere tavolo
- 16. Collegamenti ipertestuali in JLabel
- 17. Come cambiare la luminosità dell'immagine in JLabel?
- 18. JLabel Java, interrompi il testo alla riga successiva?
- 19. scoprire se il testo di JLabel supera la dimensione dell'etichetta
- 20. Sottolineato JLabel
- 21. JLabel allineamento verticale non funziona come previsto
- 22. Come modificare dinamicamente una JLabel
- 23. Come disegnare su una JLabel?
- 24. Come riassumere usando la relazione YII2 hasMany?
- 25. Rotate a Swing JLabel
- 26. Come aggiungere una nuova riga in una JLabel con variabili
- 27. efficiente riassumere su più colonne in R
- 28. Riassumere un articolo di Wikipedia
- 29. Come riassumere in modo ricorsivo gerarchia padre/figlio
- 30. Modifica carattere JLabel predefinito
l'eventuale duplicato non riesce a fornire una soluzione quando la parola non ha alcun carattere spazio in esso. Voglio dire quando c'è una sola parola che supera la larghezza di jlabel, cosa dovrebbe essere fatto in quel caso? – Nadeem