我的自定义标签组件的边框不会覆盖标签本身的边框。
相反,我的边框仅在标签文本周围。要查看有什么问题,请运行此演示:
public class TabBoundsDemo extends JTabbedPane {
Border lineBorder = BorderFactory.createLineBorder(Color.RED, 2);
public TabBoundsDemo() {
super(TOP, WRAP_TAB_LAYOUT);
for (int i = 0; i < 16; i++) {
TabComponent tab = new TabComponent("tab " + i);
super.addTab(null, new JLabel("label" + i));
super.setTabComponentAt(i, tab);
}
super.setPreferredSize(new Dimension(300, 300));
}
class TabComponent extends JLabel {
public TabComponent(String text) {
super(text);
super.setBorder(lineBorder);
super.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
int tabIndex = getTabIndexAtMouseEvent(e);
System.out.println("tabIndex=" + tabIndex);
}
});
}
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new TabBoundsDemo());
frame.pack();
frame.setVisible(true);
}
}
所以我希望我的红色边框位于标准标签边框的位置。目前它只是围绕着头衔。
谢谢!
答案 0 :(得分:2)
在下面的构造函数中添加以下代码&#34; super(TOP,WRAP_TAB_LAYOUT);&#34;如果有帮助,请告诉我们。
setUI( new BasicTabbedPaneUI() {
@Override
protected void installDefaults() {
super.installDefaults();
highlight = Color.pink;
lightHighlight = Color.green;
shadow = Color.red;
darkShadow = Color.cyan;
focus = Color.yellow;
}
} );