[java] Java의 여러 줄 도구 설명?

단락 길이 일 수도 있고 아닐 수도있는 Java에서 도구 설명을 표시하려고합니다. 긴 툴팁을 줄 바꿈하려면 어떻게해야합니까?



답변

툴팁을 <html></html>태그로 감싸면 태그로 줄을 끊을 수 있습니다 <br>. 예제 및 토론 은 http://www.jguru.com/faq/view.jsp?EID=10653 을 참조 하십시오 .

또는 https://github.com/ls-cwi/yoshiko-app/blob/master/src/main/java/com/yoshiko/internal/을 포함하여 인터넷의 여러 위치에서 찾을 수있는 JMultiLineToolTip 클래스를 사용할 수 있습니다.
view / JMultiLineToolTip.java


답변

<html>“로 시작하는 도구 설명 텍스트 는 HTML로 처리됩니다. 물론 그것은 매우 광범위한 HTML 일 수 있습니다.

JComponent.createTooltip 을 재정 의하여 도구 설명을 원하는 것을 표시 할 수있는 자체 구성 요소로 바꿀 수 있습니다 .


답변

나는 이것이 꽤 오래되었다는 것을 알고 있지만 HTML 코드를 사용하여 아주 간단한 해결책을 찾았습니다!

고정 너비의 HTML 단락을 사용하십시오.

setToolTipText("<html><p width=\"500\">" +value+"</p></html>");


답변

HTML 툴팁을 사용하고 수동으로 줄을 끊습니다 (고정 된 줄 길이를 가진 간단한 단어 토크 나이저가해야합니다). 도구 탑 텍스트가 “<HTML>”로 시작하는지 확인하십시오. “<BR/>”또는 “<P>”로 줄을 끊습니다. 나는 그것이 가장 깨끗한 솔루션이 아니며 Java의 HTML 지원이 끔찍하다는 것을 알고 있지만 일을 끝내야합니다.


답변

예:

jTextField1.setToolTipText("<html>"
                              + "Line One"
                              +"<br>"
                              + "Line 2"
                         + "</html>");


답변

이것은 다소 개선 될 수 있지만, 내 접근 방식은 제공된 길이로 도구 설명 텍스트를 분할하는 도구 설명을 설정하기 전에 호출되는 도우미 함수 였지만 가능한 경우 공백에서 단어를 나누도록 조정했습니다.

import java.util.ArrayList;
import java.util.List;

/**
 *
 */
public class MultiLineTooltips
{
    private static int DIALOG_TOOLTIP_MAX_SIZE = 75;
    private static final int SPACE_BUFFER = 10;

    public static String splitToolTip(String tip)
    {
        return splitToolTip(tip,DIALOG_TOOLTIP_MAX_SIZE);
    }
    public static String splitToolTip(String tip,int length)
    {
        if(tip.length()<=length + SPACE_BUFFER )
        {
            return tip;
        }

        List<String>  parts = new ArrayList<>();

        int maxLength = 0;
        String overLong = tip.substring(0, length + SPACE_BUFFER);
        int lastSpace = overLong.lastIndexOf(' ');
        if(lastSpace >= length)
        {
            parts.add(tip.substring(0,lastSpace));
            maxLength = lastSpace;
        }
        else
        {
            parts.add(tip.substring(0,length));
            maxLength = length;
        }

        while(maxLength < tip.length())
        {
            if(maxLength + length < tip.length())
            {
                parts.add(tip.substring(maxLength, maxLength + length));
                maxLength+=maxLength+length;
            }
            else
            {
                parts.add(tip.substring(maxLength));
                break;
            }
        }

        StringBuilder  sb = new StringBuilder("<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();
    }
}

같이 사용

jComponent.setToolTipText(MultiLineTooltips.splitToolTip(TOOLTIP));


답변

Component 인 JToolTip을 서브 클래스 화하고 컴포넌트에서 createToolTip ()을 재정의 할 수 있습니다.