2013-11-15 189 views
0

如何删除或更改这些选项卡周围边框的颜色?更改JTabbedpane的选项卡外观

此外,当鼠标悬停在标签上时,标签文本是否可以变色?

enter image description here

+0

你做一些研究? – Prasad

+0

@Prasad是的。我发现这个网页,但我不明白哪个是哪个。 http://www.java2s.com/Tutorial/Java/0240__Swing/CustomizingaJTabbedPaneLookandFeel.htm – ManInMoon

+0

好的,你可以改变悬停鼠标的标签文本的颜色。 ** setForeground()**是您可以使用的方法。 – Prasad

回答

1

是否有可能有标签的文字改变颜色,当鼠标悬停 过吗?

this answer中所述,您可以通过JTabbedPane.setTabComponentAt(int index, Component component)方法设置用于呈现选项卡标题的自定义组件。所以,你可以做这样的事情:

final JTabbedPane tabbedPane = new JTabbedPane(); 

MouseListener mouseListener = new MouseAdapter() {    
    Color defaultColor; 

    @Override 
    public void mouseEntered(MouseEvent e) { 
     JLabel label = (JLabel)e.getSource(); 
     defaultColor = label.getForeground(); 
     label.setForeground(Color.BLUE); 
    } 

    @Override 
    public void mouseExited(MouseEvent e) { 
     JLabel label = (JLabel)e.getSource(); 
     label.setForeground(defaultColor); 
    } 

    @Override 
    public void mouseClicked(MouseEvent e) { 
     JLabel label = (JLabel)e.getSource(); 
     Point point = SwingUtilities.convertPoint(label, e.getPoint(), tabbedPane); 
     int selectedTab = tabbedPane.getUI().tabForCoordinate(tabbedPane, point.x, point.y); 
     switch(e.getButton()){ 
      case MouseEvent.BUTTON2: tabbedPane.removeTabAt(selectedTab); break; 
       default: tabbedPane.setSelectedIndex(selectedTab); 
     }     
    } 

}; 

JLabel tab1 = new JLabel("Tab1"); 
tab1.addMouseListener(mouseListener);  

tabbedPane.addTab(null, new JPanel()); 
tabbedPane.setTabComponentAt(0, tab1); 

如何删除或改变颜色围绕这些 标签的边界?

在这种情况下,由外观和风格决定边框颜色。您应该查看F的默认属性并查看是否允许更改此颜色。例如,你可以执行以下代码参见l &˚F默认属性(当然设定为L & f)之后:

for(Object key : UIManager.getLookAndFeelDefaults().keySet()){ 
    System.out.println(key + " = " + UIManager.get(key)); 
} 
+0

那么这个链接如果没有用? http://www.java2s.com/Tutorial/Java/0240__Swing/CustomizingaJTabbedPaneLookandFeel.htm – ManInMoon

+0

并非如此。我认为这些属性属于Metal Look and Feel。如果您使用其他L&F,则属性可能会发生变化。 @ManInMoon – dic19

+0

请看看这个例子。我注意到,如果点击'JLabel',默认的选项卡更改会丢失。所以我添加了'mouseClicked'事件过程。如果你按下第二个按钮(在我的情况下是轮子),那么选项卡将被移除,否则选项卡将被选中。 @ManInMoon – dic19

相关问题