2013-11-15 10 views
6

Chcę dodać wiadomość z podpowiedziami multilinii do mojego komponentu swing. Podstawowym rozwiązaniem jest użycie znaczników html w następujący sposób:java, multilinii tooltip z ustaloną maksymalną szerokością, używając znacznika html

label.setToolTipText("<html><p width=\"350px\">" + text + "</p></html>"); 

Działa dobrze z długim tekstem. Ale jeśli tekst, powiedzmy, zawiera tylko jedno słowo, również będzie miał stałą szerokość 350 pikseli z dużą ilością pustego miejsca.


Czy jest jakaś specjalna właściwość html dla max-width, która będzie działać poprawnie z metody setToolTipText()? Próbowałem następne rozwiązanie, ale to nie działa:

"<p style=\"max-width: 350px\">" 

powinienem obliczyć szerokość tekstu w pikselach i zmienić otwarcie jeśli szerokość mniejsza niż 350 pikseli <p> tag?

+0

Hi ferrerverck, Znalazłeś rozwiązanie? –

Odpowiedz

-2

Proponuję następujące:

Po ustawieniu stałej szerokości znaków, można uzyskać preferowany rozmiar przy użyciu:

Dimension d = someToolTip.getPreferredSize(); 
if (d.width < 350) { 

    // Insert code to make tooltip-size smaller, by setting it to d.width; 

} 
+0

Cześć Luke, twój pomysł będzie sensowny, jeśli załączysz przynajmniej częściowe rozwiązanie. Na przykład. preferowany rozmiar w moim przypadku zwraca tę samą wartość, co ustalony rozmiar, chociaż można go znacznie zmniejszyć. Albo masz na myśli coś innego, albo po prostu zasugerowałeś pomysł bez wcześniejszego sprawdzenia. –

+0

Ustaw etykietkę narzędziową w żądany sposób, pobierz bieżący rozmiar za pomocą metody getPreferredSize(), a następnie ustaw ten rozmiar na wypadek, gdyby był mniejszy. Więc ręcznie zmień szerokość, zamiast ustawiać maksimum. – Luke

Powiązane problemy