为什么getRolloverTab在Java中没有按预期工作

时间:2014-09-22 20:04:28

标签: java swing

我已创建自己的自定义jTabbedPaneBasicTabbedPaneUI。除了一件事之外,一切都按预期工作得很好,那就是我无法按照预期使BasicTabbedPaneUI getRolloverTab()方法工作。

这是我的代码

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
import javax.swing.plaf.basic.BasicTabbedPaneUI;


public class HAAMS 
{
  //My Custom class for jTabbedPane
  public static class CustomMainMenuTabs extends BasicTabbedPaneUI
  {
    protected void paintTabBackground(Graphics g, int tabPlacement, int tabIndex, int x, int y, int w, int h, boolean isSelected)
    {
        Graphics2D g2 = (Graphics2D) g;

        Color color;

        if (isSelected) { color = new Color(74, 175, 211); } 
        else if (getRolloverTab() == tabIndex) {  color = new Color(45, 145, 180); } 
        else {color = new Color(68, 67, 67);}

        g2.setPaint(color);
        g2.fill(new RoundRectangle2D.Double(x, y, w, h, 30, 30));

        g2.fill(new Rectangle2D.Double(x + 100,y,w,h));
    }
  }

   public static void main(String[] args) 
   {
     JFrame MainScreen = new JFrame("Custom JTabbedPane");
     MainScreen.setExtendedState(MainScreen.getExtendedState() | JFrame.MAXIMIZED_BOTH);

     //Setting UI for my jTabbedPane implementing my custom class CustomMainMenuTabs
     JTabbedPane jtpane = new JTabbedPane(2);
     jtpane.setUI(new CustomMainMenuTabs());
     jtpane.add("1st Tabe", new JPanel());
     jtpane.add("2nd Tabe", new JPanel());
     jtpane.add("3rd Tabe", new JPanel());

     MainScreen.getContentPane().add(jtpane);
     MainScreen.setVisible(true);
  }
}

我出错了什么,当鼠标悬停在标签上时,这不会改变标签的背景颜色?任何帮助将不胜感激。

你可以看到,在我的IF条件下,给出了getRolloverTab()条件,当鼠标悬停在标签上时应该改变标签的颜色,但问题是当鼠标悬停在标签上时它不会改变颜色。如果if(isSelected)条件和其他条件工作正常,则getRolloverTab()条件不起作用。我在哪里弄错了。

0 个答案:

没有答案