【问题标题】:Change tab look for JTabbedpane更改选项卡查找 JTabbedpane
【发布时间】:2013-11-28 19:38:59
【问题描述】:

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

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

【问题讨论】:

  • 你做过研究吗?
  • @Prasad 是的。我找到了这个页面,但我不明白哪个是哪个。 java2s.com/Tutorial/Java/0240__Swing/…
  • 好的,您可以在鼠标悬停时更改选项卡文本的颜色。 setForeground() 是你可以使用的方法。

标签: java jtabbedpane


【解决方案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);

如何删除或更改这些边框的颜色 标签?

在这种情况下,由外观决定边框颜色。您应该查看 L&F 默认属性,看看是否允许更改此颜色。例如,您可以执行以下代码来查看 L&F 默认属性(当然是在设置 L&F 之后):

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

【讨论】:

  • 所以这个链接没用? java2s.com/Tutorial/Java/0240__Swing/…
  • 没那么多。我认为这些属性属于 Metal Look and Feel。如果您使用的是其他 L&F,则属性可能会发生变化。 @ManInMoon
  • 请看示例。我注意到,如果您单击JLabel,默认选项卡更改将丢失。所以我添加了mouseClicked 事件过程。如果您按下第二个按钮(在我的情况下是滚轮),则该选项卡将被删除,否则该选项卡将被选中。 @ManInMoon
  • 在 MouseListener mouseListener = new MouseAdapter() 上的 MouseAdapter 出现错误。这应该是鼠标监听器吗?
  • 所以我应该将 :MouseListener mouseListener = new MouseAdapter() 更改为 MouseAdapter mouseListener = new MouseAdapter() { 吗?还是我的 MouseListener 类型错误?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 2011-10-26
  • 1970-01-01
  • 2013-11-22
  • 2014-06-19
  • 2014-11-01
  • 1970-01-01
相关资源
最近更新 更多