2013-11-15 149 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

相關問題