Ich versuche, Tooltips in Java anzuzeigen, die möglicherweise eine Absatzlänge haben oder nicht. Wie kann ich lange Tooltips in Zeilenumbrüche umschließen?
Werden QuickInfos nicht automatisch in Zeilenumbrüche umgewandelt, wenn sie in HTML-Tags eingeschlossen sind? Ich bin mir nicht sicher, also gebe ich das nicht als Antwort ein.
Paul Tomblin
Paul: Nur wenn Sie explizite Zeilenumbrüche haben.
Amanda S
Antworten:
146
Wenn Sie den Tooltip <html>und die </html>Tags einschließen, können Sie Zeilen mit <br>Tags unterbrechen. Beispiele und Diskussionen finden Sie unter http://www.jguru.com/faq/view.jsp?EID=10653 .
Ich habe die von Ihnen vorgeschlagene JMultiLineToolTip-Klasse verwendet. Nachdem ich setFixedWidth () verwendet hatte, um den Tooltip auf eine angemessene Größe zu beschränken, funktionierte es hervorragend. Vielen Dank!
Amanda S
24
Tooltip-Text, der mit " <html>" beginnt , wird als HTML behandelt. Das könnte natürlich sehr breites HTML sein.
Sie können JComponent.createTooltip überschreiben , um den Tooltip durch Ihre eigene Komponente zu ersetzen, die anzeigen kann, was Sie möchten.
Was ist, wenn ich Text anzeigen möchte, der viel kürzer als die QuickInfo-Größe ist? "max-width" -Tag funktioniert hier nicht
nickolay.laptev
5
Verwenden Sie HTML-QuickInfos und unterbrechen Sie Ihre Zeilen manuell (ein einfacher Wort-Tokenizer mit fester Zeilenlänge sollte dies tun). Stellen Sie einfach sicher, dass Ihr Tooltop-Text mit "<HTML>" beginnt. Unterbrechen Sie die Zeilen mit "<BR/>" oder "<P>". Mir ist klar, dass es nicht die sauberste Lösung ist und Javas HTML-Unterstützung schrecklich ist, aber es sollte alles erledigen.
Dies beantwortet nicht die Frage des Fragestellers. Er fragte nach dem Umbrechen, wenn es angezeigt wird, nicht im Quellcode.
Schlitten
2
@ArtB Dieser Beispielcode enthält einen zweizeiligen Tooltip, wie gefragt.
Thelema
4
Dies könnte etwas verbessert werden, aber mein Ansatz war eine Hilfsfunktion, die vor dem Festlegen des Tooltips aufgerufen wurde und den Tooltip-Text in der angegebenen Länge aufteilte, aber angepasst wurde, um Wörter im Leerzeichen nach Möglichkeit zu unterbrechen.
Ich habe eine Utility-Klasse erstellt, die Zeichenfolgen automatisch mit <br>Tags auf eine bestimmte Länge formatiert . Es basiert auf der von Paul Taylor veröffentlichten MultiLineToolTips-Klasse, hat jedoch einen Fehler, der Teile der Zeichenfolge überspringt und die Zeichenfolge nicht auf eine bestimmte Länge beschränkt.
Um meine Klasse zu verwenden, rufen Sie einfach die splitToolTip-Methode auf, indem Sie schreiben MultiLineToolTips.splitToolTip(yourString);oder MultiLineToolTips.splitToolTip(yourString, maxLength);wenn Sie sie auf eine bestimmte maximale Länge teilen möchten. Dadurch werden gut formatierte Tooltip-Zeichenfolgen erstellt.
import java.util.ArrayList;import java.util.List;/** A helper class to split strings into a certain length,
* formatted with html {@literal<br>} tags for multi-line tool tips.
* Based on the MultiLineToolTips class posted by
* <a href="https://stackoverflow.com/users/1480018/paul-taylor">Paul Taylor</a>
* on <a href="https://stackoverflow.com/a/13503677/9567822">Stack Overflow</a>
* @author <a href="https://stackoverflow.com/users/9567822/andrew-lemaitre?tab=profile">Andrew LeMaitre</a>
*/publicfinalclassMultiLineToolTips{/** Private constructor for utility class. */privateMultiLineToolTips(){}/** Default max length of the tool tip when split with {@link #splitToolTip(String)}. */privatestaticfinalint DIALOG_TOOLTIP_MAX_SIZE =75;/** A function that splits a string into sections of {@value #DIALOG_TOOLTIP_MAX_SIZE} characters or less.
* If you want the lines to be shorter or longer call {@link #splitToolTip(String, int)}.
* @param toolTip The tool tip string to be split
* @return the tool tip string with HTML formatting to break it into sections of the correct length
*/publicstaticString splitToolTip(finalString toolTip){return splitToolTip(toolTip, DIALOG_TOOLTIP_MAX_SIZE);}/** An overloaded function that splits a tool tip string into sections of a specified length.
* @param toolTip The tool tip string to be split
* @param desiredLength The maximum length of the tool tip per line
* @return The tool tip string with HTML formatting to break it into sections of the correct length
*/publicstaticString splitToolTip(finalString toolTip,finalint desiredLength){if(toolTip.length()<= desiredLength){return toolTip;}List<String> parts =newArrayList<>();int stringPosition =0;while(stringPosition < toolTip.length()){if(stringPosition + desiredLength < toolTip.length()){String tipSubstring = toolTip.substring(stringPosition, stringPosition + desiredLength);int lastSpace = tipSubstring.lastIndexOf(' ');if(lastSpace ==-1|| lastSpace ==0){
parts.add(toolTip.substring(stringPosition, stringPosition + desiredLength));
stringPosition += desiredLength;}else{
parts.add(toolTip.substring(stringPosition, stringPosition + lastSpace));
stringPosition += lastSpace;}}else{
parts.add(toolTip.substring(stringPosition));break;}}StringBuilder sb =newStringBuilder("<html>");for(int i =0; i < parts.size()-1; i++){
sb.append(parts.get(i)+"<br>");}
sb.append(parts.get(parts.size()-1));
sb.append(("</html>"));return sb.toString();}}
Wenn Sie nur <html>Ihren Tooltip-Text hinzufügen , scheint er zu funktionieren, bis Sie /*...*/oder HTML in Ihrem Text haben. Verwenden <html><pre>oder entkommen Sie Ihrem Text. Ich musste es auch benutzen <font size=3>, um es etwas anständig aussehen zu lassen.
Antworten:
Wenn Sie den Tooltip
<html>
und die</html>
Tags einschließen, können Sie Zeilen mit<br>
Tags unterbrechen. Beispiele und Diskussionen finden Sie unter http://www.jguru.com/faq/view.jsp?EID=10653 .Oder Sie können die JMultiLineToolTip-Klasse verwenden, die an vielen Stellen im Internet zu finden ist, einschließlich https://github.com/ls-cwi/yoshiko-app/blob/master/src/main/java/com/yoshiko/internal/ view / JMultiLineToolTip.java
quelle
Tooltip-Text, der mit "
<html>
" beginnt , wird als HTML behandelt. Das könnte natürlich sehr breites HTML sein.Sie können JComponent.createTooltip überschreiben , um den Tooltip durch Ihre eigene Komponente zu ersetzen, die anzeigen kann, was Sie möchten.
quelle
Ich weiß, dass dies ziemlich alt ist, aber ich habe eine ziemlich einfache Lösung mit HTML-Code gefunden!
Verwenden Sie einfach einen HTML-Absatz mit einer festen Breite:
quelle
Verwenden Sie HTML-QuickInfos und unterbrechen Sie Ihre Zeilen manuell (ein einfacher Wort-Tokenizer mit fester Zeilenlänge sollte dies tun). Stellen Sie einfach sicher, dass Ihr Tooltop-Text mit "<HTML>" beginnt. Unterbrechen Sie die Zeilen mit "<BR/>" oder "<P>". Mir ist klar, dass es nicht die sauberste Lösung ist und Javas HTML-Unterstützung schrecklich ist, aber es sollte alles erledigen.
quelle
Beispiel:
quelle
Dies könnte etwas verbessert werden, aber mein Ansatz war eine Hilfsfunktion, die vor dem Festlegen des Tooltips aufgerufen wurde und den Tooltip-Text in der angegebenen Länge aufteilte, aber angepasst wurde, um Wörter im Leerzeichen nach Möglichkeit zu unterbrechen.
Verwenden Sie wie
quelle
Sie können JToolTip, eine Komponente, unterordnen und createToolTip () für die Komponente überschreiben.
quelle
Hier ist eine Version, die ich zuvor verwendet habe. Sie funktioniert gut, wenn Sie Ihre Tooltipps aus ResourceBundles laden:
Und Sie würden es verwenden, indem Sie diese Methode aufrufen, bevor Ihre Benutzeroberfläche erstellt wird:
Fügen Sie dann in Ihre Eigenschaftendateien einfach Zeilenumbrüche ein, um Ihre QuickInfos wie gewünscht zu verpacken.
quelle
Ich habe eine Utility-Klasse erstellt, die Zeichenfolgen automatisch mit
<br>
Tags auf eine bestimmte Länge formatiert . Es basiert auf der von Paul Taylor veröffentlichten MultiLineToolTips-Klasse, hat jedoch einen Fehler, der Teile der Zeichenfolge überspringt und die Zeichenfolge nicht auf eine bestimmte Länge beschränkt.Um meine Klasse zu verwenden, rufen Sie einfach die splitToolTip-Methode auf, indem Sie schreiben
MultiLineToolTips.splitToolTip(yourString);
oderMultiLineToolTips.splitToolTip(yourString, maxLength);
wenn Sie sie auf eine bestimmte maximale Länge teilen möchten. Dadurch werden gut formatierte Tooltip-Zeichenfolgen erstellt.quelle
Wenn Sie nur
<html>
Ihren Tooltip-Text hinzufügen , scheint er zu funktionieren, bis Sie/*...*/
oder HTML in Ihrem Text haben. Verwenden<html><pre>
oder entkommen Sie Ihrem Text. Ich musste es auch benutzen<font size=3>
, um es etwas anständig aussehen zu lassen.quelle