Я пишу пользовательский BasicTabbedPaneUI
Я переопределил paintText
и изменил размер шрифта внутри него, но это оставляет нежелательные дополнительные отступы справа от вкладки.
, как вы видите, отступы довольно большие, я бы хотел, чтобы они были такими же, как и на левой стороне.Так что это мой код
import sun.swing.SwingUtilities2;
import javax.swing.*;
import javax.swing.plaf.basic.BasicTabbedPaneUI;
import java.awt.*;
public class UITest {
public static void main(String[] args) {
JFrame jFrame = new JFrame();
JTabbedPane jTabbedPane = new JTabbedPane();
jTabbedPane.add(new JPanel(), "This is a test title");
jTabbedPane.add(new JPanel(), "This is also a test title");
jTabbedPane.setUI(new LynxTabbedPane());
jFrame.setContentPane(jTabbedPane);
jFrame.setSize(300, 100);
jFrame.setVisible(true);
}
public static class LynxTabbedPane extends BasicTabbedPaneUI {
@Override
protected void paintText(Graphics g, int tabPlacement, Font font, FontMetrics metrics, int tabIndex, String title, Rectangle textRect, boolean isSelected) {
Font myFont = new Font(font.getFontName(), Font.BOLD, 10);
g.setFont(myFont);
g.setColor(Color.WHITE);
SwingUtilities2.drawStringUnderlineCharAt(tabPane,
g, title,
tabPane.getDisplayedMnemonicIndexAt(tabIndex),
textRect.x, metrics.getAscent() + 2);
}
}
}
Я бы предположил, что мне нужно вычислить tabWidth, поэтому я попытался переопределить его и вычесть из 5, но, но он не изменился, поэтому теперь я не в курсе.
@Override
protected int calculateTabWidth(int tabPlacement, int tabIndex, FontMetrics metrics) {
return super.calculateTabWidth(tabPlacement, tabIndex, metrics) - 5;
}