JTabbedPane에 대한 사용자 정의 LaF를 작성했습니다. 유일한 문제는 텍스트가 아닌 탭을 렌더링한다는 것입니다. 제발, 모든 것을 시도했습니다!사용자 정의 JTabbedPane LaF가 텍스트를 표시하지 않음
package com.jama.lyricist.ui;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.Rectangle;
import javax.swing.plaf.basic.BasicTabbedPaneUI;
public class AdvancedTabbedPaneUI extends BasicTabbedPaneUI{
@Override
protected void paintTab(Graphics g, int tabPlacement, Rectangle[] rects, int tabIndex, Rectangle iconRect, Rectangle textRect) {
Color savedColor = g.getColor();
g.setColor(new Color(238,238,238));
g.fillRect(rects[tabIndex].x, rects[tabIndex].y,
rects[tabIndex].width, rects[tabIndex].height);
g.setColor(new Color(153, 153, 153));
g.drawRect(rects[tabIndex].x, rects[tabIndex].y,
rects[tabIndex].width, rects[tabIndex].height);
g.setColor(new Color(102,102,102));
g.setColor(savedColor);
}
private final Insets borderInsets = new Insets(0, 0, 0, 0);
@Override
protected void paintContentBorder(Graphics g, int tabPlacement, int selectedIndex) {
}
@Override
protected Insets getContentBorderInsets(int tabPlacement) {
return borderInsets;
}
@Override
protected void paintContentBorderTopEdge(Graphics g, int tabPlacement,
int selectedIndex, int x, int y, int w, int h) {
super.paintContentBorderTopEdge(g, tabPlacement, -1, x, y, w, h);
}
}
그것은이 출력 다음 paintTab() 메서드를 재정의함으로써 Output
여기서 탭 제목을 그립니다. 제 생각에 당신은 당신의'paintTab' 메쏘드의 어딘가에서'paintText'를 던질 필요가 있다고 생각합니다, [here] (http://kickjava.com/src/javax/swing/plaf/basic/BasicTabbedPaneUI.java.htm#576) –