JLabels를 하이퍼 링크로 사용하고 있습니다. 나는 그들이 브라우저의 링크와 똑같이 보이고 기능하기를 바란다. 그래서 텍스트 창/편집기 창 등을 사용하는 것은 바람직하지 않다. 문제는 이러한 링크가 배치 될 컨테이너의 대부분이 지정된 크기가 없다는 것입니다. 즉 부모 (또는 부모님)의 크기에 의존합니다. Boxes를 레이아웃 용으로 사용하고, 링크 텍스트가 상자 너비의 약 2/3 이상을 차지하는 경우 상자 내용이 상자의 실제 경계 밖으로 늘어납니다 (상자가 JScrollPane으로 둘러싸인 경우 , 수평 스크롤 바가 나타납니다).선호/최대/최소 크기가없는 텍스트 래핑 JLabels
JLabel에서 줄 바꿈을 적용 할 수있는 방법이 있습니까? 필자가 읽은 많은 게시물은 HTML 태그의 텍스트를 puttng하면 필요시 자동으로 줄 바꿈됩니다.하지만 내가 무엇을해도이 작업을 수행 할 수는 없습니다. (- 즉
if(text.length() > wrapLength)
{
//break the text into substrings and insert a <br /> at wrapLength
//the difficulty is in figuring out the value of wrapLength
}
이 자동화 될 수없는 한)
어떤 아이디어가 크게 감사하겠습니다을 나는 그들이 갈 것입니다 정확히 모르기 때문에 나는
태그를 사용할 수 없습니다. 하이퍼 링크 클래스에 대한 코드는 아래와 같습니다.
import java.awt.Color;
import java.awt.Desktop;
import java.awt.Font;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import javax.swing.JLabel;
public class Hyperlink extends JLabel
{
private URI uri;
private String baseText;
public Hyperlink(String text, String uri, Font font, Color textColor)
{
super(text);
baseText = text;
setFont(font);
setForeground(textColor);
setOpaque(false);
if(Desktop.isDesktopSupported())
{
try
{
setToolTipText(uri);
this.uri = new URI(uri);
addMouseListener(new LinkMouseListener());
}
catch(URISyntaxException ex)
{
}
}
}
private class LinkMouseListener extends MouseAdapter
{
@Override
public void mouseClicked(MouseEvent e)
{
Desktop desktop = Desktop.getDesktop();
try
{
desktop.browse(uri);
}
catch(IOException ioe)
{
System.out.println("Something went wrong..."); //DELETE
}
}
@Override
public void mouseEntered(MouseEvent e)
{
setText("<html><u>" + baseText + "</u></html>");
}
@Override
public void mouseExited(MouseEvent e)
{
setText(baseText);
}
}
}