保持 JTabbedPane 的指定颜色
Keeping the specified color for JTabbedPane
我在 JTabeedPane
中使用此布局,背景如图所示。背景颜色未更改为所示颜色。我在设计的时候是下面的结构
JFrame (Background color: [0,115,153])
JPanel (Background color: [3,50,67])
JPanel (Background color: [16,110,173])
...
JPanel (Background color: [3,50,67])
JTabbedPane (Background color: [3,50,67])
Tab 1,2,3 (Background color: [3,50,67])
白色未在任何前景色或背景色中启用,但在那里仍然可见。我在保持组件 Opaque 并禁用 Opaque 的同时对其进行了测试,但没有效果。我该如何删除它?
恐怕这并不像人们想象的那么微不足道,因为这种格式完全由外观管理。
但是您可以调用 tabbedPane.setUI(yourCustomUI);
来设置自定义 UI。
我准备了一个 UI 供你使用,希望它能安全一些(见内联评论自定义):
// your code...
tabbedPane.setUI(new MinimalisticTabbedPaneUI());
// your code...
public static class MinimalisticTabbedPaneUI extends BasicTabbedPaneUI {
// paints the border around the currently visible content
@Override
protected void paintContentBorder(Graphics g, int tabPlacement, int selectedIndex) {
// do nothing
}
// paints the border around each tab
@Override
protected void paintTabBorder(Graphics g, int tabPlacement, int tabIndex, int x, int y, int w, int h, boolean isSelected) {
// only paints a border if the tab is selected, edit this to add your personal formatting
if(isSelected){
super.paintTabBorder(g, tabPlacement, tabIndex, x, y, w, h, isSelected);
}
}
}
我在 JTabeedPane
中使用此布局,背景如图所示。背景颜色未更改为所示颜色。我在设计的时候是下面的结构
JFrame (Background color: [0,115,153])
JPanel (Background color: [3,50,67])
JPanel (Background color: [16,110,173])
...
JPanel (Background color: [3,50,67])
JTabbedPane (Background color: [3,50,67])
Tab 1,2,3 (Background color: [3,50,67])
白色未在任何前景色或背景色中启用,但在那里仍然可见。我在保持组件 Opaque 并禁用 Opaque 的同时对其进行了测试,但没有效果。我该如何删除它?
恐怕这并不像人们想象的那么微不足道,因为这种格式完全由外观管理。
但是您可以调用 tabbedPane.setUI(yourCustomUI);
来设置自定义 UI。
我准备了一个 UI 供你使用,希望它能安全一些(见内联评论自定义):
// your code...
tabbedPane.setUI(new MinimalisticTabbedPaneUI());
// your code...
public static class MinimalisticTabbedPaneUI extends BasicTabbedPaneUI {
// paints the border around the currently visible content
@Override
protected void paintContentBorder(Graphics g, int tabPlacement, int selectedIndex) {
// do nothing
}
// paints the border around each tab
@Override
protected void paintTabBorder(Graphics g, int tabPlacement, int tabIndex, int x, int y, int w, int h, boolean isSelected) {
// only paints a border if the tab is selected, edit this to add your personal formatting
if(isSelected){
super.paintTabBorder(g, tabPlacement, tabIndex, x, y, w, h, isSelected);
}
}
}