텍스트를 사용자 지정 테이블 셀 렌더러로 렌더링하고 현재 셀 너비를 초과하면 그릴 텍스트를 자르고 "이 텍스트는 긴 ... "종류의 표현을 사용합니다. 마지막 세 개의 점은 테두리 상자를 벗어나지 않습니다.상자에 텍스트를 렌더링하고 초과를 세 도트로 바꾸는 방법
FontMetrics fm0 = g2.getFontMetrics();
int h = fm0.getHeight();
int ellw = fm0.stringWidth("\u2026");
int titleWidth = fm0.stringWidth(se.title);
if (titleWidth > getWidth()) {
for (int i = se.title.length() - 1; i > 0; i--) {
String tstr = se.title.substring(0, i);
int tstrw = fm0.stringWidth(tstr);
if (tstrw + ellw < getWidth()) {
g2.drawString(tstr, 2, h);
g2.drawString("\u2026", 2 + tstrw, h);
break;
}
}
} else {
g2.drawString(se.title, 2, h);
}
결정하는 더 나은 방법이 있나요 얼마나 많은 문자를해야 내가 drawString()
합니다 ... (U2026) 문자로 전환하기 전에 : 내 현재의 알고리즘은 다음과 같다?
감사합니다. 이유는 첫 번째 줄 (제목)이 16pt 텍스트로 그려지고 두 번째 줄과 세 번째 줄 (일부 세부 사항)이 셀 내에서 일반 텍스트로 그려지기 때문입니다. LeftDotRenderer는 주로 전체 문자열 너비 대신 문자 당 크기를 계산한다는 점에서 다릅니다. 나는 그것을 시험 할 것이다. – akarnokd