Creating mouse rollover events on tab selectors in Swing

Hi,
I have a jTabbedPane on which I have placed several panels to make tabs.
Here are the two problems.
1.How can I control the background color of the tab selector(where the title of the tab resides) when its tab is selected. I have been able to set dynamically the unselected ones.
2. How can I change the color of the text in the title of the tab when the mouse rollovers the tab selector. When a mouse goes over the selector, the text in the selector needs to change to blue. When the mouse leaves the selector the text color needs to go back to black. I need to capture the event for the selector part only.
I have been able to do it with buttons but how can I do it with tab selectors?
Thanks for your help.

I just did this quick but hopefully it should help you with the mouse events, simply get the rectangles that are associated with the tabs, and dectect when the mouse is inside of one, or not inside of one
public class TabbedPaneExample {
     JTabbedPane tabbedPane;
     Rectangle r[];
     public TabbedPaneExample() {
          tabbedPane = new JTabbedPane();
          tabbedPane.addTab("PANEL1", new JPanel());
          tabbedPane.addTab("PANEL2", new JPanel());
          tabbedPane.addTab("PANEL3", new JPanel());
          JFrame frame = new JFrame("TabbedExample");
          frame.setSize(400, 400);
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.getContentPane().add(tabbedPane);
          frame.setVisible(true);
          //Get the rectangles associated with each tab
          TabbedPaneUI ui = tabbedPane.getUI();
          r = new  Rectangle[3];
          for (int j = 0; j < 3; j++)
               r[j] = ui.getTabBounds(tabbedPane, j);
          //add a MouseMotionListener to detect when a mouse enters a tab
          tabbedPane.addMouseMotionListener(
               new MouseMotionAdapter() {
                    public void mouseMoved(MouseEvent e) {
                         for (int j = 0; j < 3; j++)
                         if (r[j].contains(e.getPoint()))
                              //put your code for changes here
                              System.out.println("inside a tab");
     public static void main(String args[]) {
          TabbedPaneExample tp = new TabbedPaneExample();
}Hope that helps

Similar Messages

  • MenuBar mouse rollover event not firing

    Is MenuBar in SDK 4.1/4.5 a little flaky to anyone else?
    The rollover events fire as they should at first, but if you move the mouse fast enough, it seems to screw up eventually and at that point only the itemRollOut event is firing (no itemRollOver at all, even though the mouse clearly moved over a new menu item!) 
    Also sometimes I'm able to get the menu item's background-highlight effect to remain, if I move the mouse cursor away fast enough.  Is this a crummy or little used component, or what?  I'm using Halo only...

    Expected response on this, but I can add that it seems to happen mostly when a drop down menu has only one item listed.  The plan is to add more (obviously) but it's a little odd - I'm wondering if anyone can reproduce the same result with a MenuBar menu that only has one option.  Of course it works "at first", you have to play around with it a bit for the events to get out of sync, so it's tough...

  • How to create Mouse rollover/rotate actions

    Hi! Thanks for reading.
    I'm interested in learning how to create a "3d" object that a user can interact with using their mouse. I've taken 60+ pictures of a camera rotating by 5 degree increments and I'm trying to put together something similar to what Verizon has on their website for phones -  Where your mouse rolls over an object and rotates it.
    I've seen this done with Java as well, but I'm interested in how flash does it. Can someone help point me in the right direction on where to start please?
    Thanks for your time.

    I am sure it is not the best way to do it since I don't have coding skills. I would create multiple narrow buttons that have a rollover to call up the desired image.

  • Problems with Mouse Down event for a picture control embedded in tab.

    I noticed that when trying to get a Mouse Down event for a picture control that the Mouse Down will not be 'fired' if the picture is embedded in a tab control. It also appears that this problem exists for other controls (I only tested a slider in addition to the picture). It isn't much of an issue for me now as I can just poll the mouse property of the picture control, but the Mouse Down event has information that I may want access to in my next software revision (button pressed, and Alt mod). I could do that by handling the Mouse Down event for the tab itself and checking to see if the the mouse property isn't -1, -1 for the picture, but that seems a little bit too kludgy (sp?) to me and wouldn
    't address the issue with other control types. Any chance of this being addressed by a patch sometime in the next couple of months???
    Attachments:
    TabProblem.vi ‏69 KB

    The problem I reported above was in LV 6.1.
    As a work-around, I used the mouse down on the tab control and did the math to decide if the picture was clicked.
    I have been told that this was fixed in LV 7.0. I can not confirm.
    You could call NI and ask about the service request number I cited above.
    I hope this helps,
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • Rollover Events & Dashboard Sorting

    Hey everyone,
    I am wondering if anyone has ever tried to accomplish either of the following.
    1. Is it possible to create rollover events so that on mouse rollover, additional information could be view? For example, suppose we have a pie graph of revenue, as we rollover each pie piece we would like to see the top ten contributors for that pie piece in a pop up box. Is this possible?
    2. I know its easy to specify sort criteria when building a report, but can you do it at runtime? I.e. suppose we have a dashboard, is it possible to allow the user to sort the data being returned on the fly? Or do we need to have multiple reports pre-built which are already sorted based on that criteria?
    Thanks!
    -Joe

    Joe,
    2nd requirment can be achieved using "Enable Column sorting in dashboards" feature in table view properties. In the results tab, select table view from drop down and Click on table view properties button and in the pop up window, You will find a check box saying "Enable Column Sorting in dashboards", Check that. save the report and check dashboard.
    - Madan Thota

  • How to create a rollover button effect in Captivate 7?

    Hi,
    I recently upgraded from Captivate 6 to Captivate 7 and am curious to know how I can create a rollover state for a SmartShape button. Basically, let's say I have a SmartShape being used as a button. What I want is to have the button have a glow effect and a shadow effect each time the mouse is hovered over it. Is there an easier way than having two objects on the slide -- one as the normal state and one the mouse hoever image. What I'm thinking is that the mouse hovered state image will have it's 'Visible in Output' set as unchecked and I can use an Advanced Action to show the object on mouse hover. Perhaps I can have the mouse hovered state image as a rollover SmartShape too?
    Nonetheless, this looks like too much work. If I have 10 clickables on the page for which I want rollover effects, I would need to have 10 additional objects with their rollover states -- just seems like too much, but perhaps that's the Captivate way. Or I am I missing the obvious?
    Any help would be appreciated.
    Thanks,
    Sean

    Most people would say the easiest way to achieve what you are talking about would be to just create your own custom image button in a graphics editor and give the Over state image having the glow effect that you want.
    If you decide to go that route, this tutorial describes the process of creating an image button:
    http://www.infosemantics.com.au/adobe-captivate/create-custom-image-buttons
    Another possibility is that you can use the Infosemantics Event Handler widget to trigger an Apply Effect action and use the Glow filter as the effect. 
    However, this may require some tweaking since it's not that easy to time effects that are applied via an advanced action.

  • Can't create new calendar events through Thunderbird

    Hi,
    I have Lightning installed and hooked up to two Google Calendars, one for actual events (both work and personal) and one for things like local holidays and week numbers (this is a read-only calendar Google's put together).
    My issue is that I can't create a new event on my personal calendar through Thunderbird. I can open the "create new event" dialog box no problem, and fill in all the details, but when I hit "Save and Close" nothing happens - the dialog box stays open, and no event is created.
    I can create events in a 'local' calendar (e.g. the blank "Home" calendar that Lightning comes with as a default). I can log into my Google calendar through my browser and create events no problem, but then hitting the "synchronise" button in Thunderbird doesn't make them show up (although syncing the calendar app on my android phone, linked to the same Google Calendar, makes the new events created through the browser show up no problem).
    The only other information I can offer is that on the Calendar tab in Thunderbird, on the left of the screen, there's list of the calendars my Thunderbird/Lightning has installed/synchronised: "Home" (a local calendar, basically empty but functioning), "Luke John's Calendar" (Google Calendar, the one I'm having the problem with), and "Week Numbers" (Read-only Google Calendar, I don't know if it's possible to create new events on because it's read only). Next to both "Luke John's Calendar" and "Week Numbers" are little (error?) symbols: black exclamation marks in yellow triangles, which give the rollover text "The Calendar [name] is momentarily not available."
    Any suggestions for sorting this out? I'd be very grateful!

    Hi Benito,
    What does it mean when a subscribed calendar is corrupted?
    The files iCal uses to store the calendars (.ics files) are text files. (You can look at one by exporting a calendar from iCal and opening the .ics file with a text editor.) When you subscribe to a calendar you are copying the calendar file to your hard drive. If some information is missing in the file, or the data is ordered in the wrong way, this can lead to iCal not functioning properly.
    The error could be on the server or your local copy, from what you write it's hard to tell. You could try subscribing to the problem calendar from another machine to see if it has the same problem.
    The usual recommendation for a local calendar (one you created) with this problem is to export and then import the calendar. This means the calendar is re-created from scratch. You can't use this solution with a calendar you are subscribed.
    I hope this helps.
    John M

  • How to fire mouse wheel events to parent container?

    Hi,
    When I create a JPanel (let's say jParent) inside a JScrollPane and this JPanel is larger than the current viewport I can use my mouse wheel to scroll the JPanel's containt without coding anything about that.
    But if I add another JPanel-derived component (let's say jChild) to the first JPanel, mouse wheel events are not received by the first JPanel when the mouse is over the new added child JPanel.
    How can I forward child's mouse wheel events to the first JPanel?
    If I use:
    jChild.addMouseWheelListener(jParent)I must implement a mouseWheelMoved() method in jParent that requires some code to work while it was doing it byitself before...
    Thanks in advance for any help :-)
    Regards,
    Lara.

    you have a mouseWheelListener added to jChild?
    if so, in the mouseWheelMoved code include this line
    jParent.dispatchEvent(mouseWheelEvent);//or to the scrollpane

  • How to use Mouse Wheel Events

    Hello Everyone
    I am using Datagrid in my Canvas.
    I use mouse wheel to scroll the datagrid. But in one scroll
    through that wheel make the more than 4 rows to be scroll.
    So Now my requirement is to control the delta value of mouse
    wheel event and how to use that with my datagrid so that i will
    able to scroll one row through mouse wheel scroller.
    Thanks

    please give me some suggestion around it.
    I want to scroll one row of datagrid with per mousewheel
    scroll. I am not getting how to use the scrollMouseWheelMultiplier
    property of the IConfiguration class because i am not able to
    create the object of this class.
    I am using the Flex 3.0 and flash 9 version.
    please help me out around this.

  • Create new iCal event as easily as Outlook?

    Is there a way to create an event in iCal like Outlook? I may be missing something.
    Outlook - click once on the day and type
    iCal - click twice on the day, then click once on the event name, then type (I know there is a keyboard equivalent, but that is slower, also. Where does the focus go upon creating a new event?
    Almost everything I do on a Mac is cleaner and more friendly, but iCal is frustrating. Also, to get Info, you can't just double-click on something. You have to navigate to Show Info on the contextual menu or go to the keyboard. In Outlook, you just double-click and it opens with focus on the most obvious place.
    Are there some shortcuts I am missing? I have read the shortcuts menu item and it gives no hints.

    Welcome to the discussions, whardy7.
    Double-click where you want it (in Week view you should be able to get it right to 15 minutes) then type the Event name (focus will be in the field) then tab & type through the various fields. Have the Info panel open all the time, then simply click an event to see details.
    AK

  • Mouse down event reading a string terminal trick

    Hi,
    I wondered why I was getting frustrated entering a pasword that was verified in the mouse down event of the OK button. This is becuase when you click the OK button the entered text is still in the buffer and not copied to the terminal. (Which is more natural than clicking somewhere on the FP first). Note pressing enter or tab gets the string control out of enter text mode.
    Turns out need update value while typing turned on if you want to gaurantee a correct read of a text input control in a mouse down event. As this is one of those not obvious but sometimes happens bugs... I have posted for reference for others :-)
    Example attached v8.6.1.
    Attachments:
    TestMouseDownEvent.vi ‏13 KB

    Nick wrote:
    Turns out need update value while typing turned on if you want to gaurantee a correct read of a text input control in a mouse down event.
    AFAIK, "Update value while typing" will trigger only a Value Change event of the Str Ctl.
    Mouse Down event will preceed a Value Change event, if you have both the event cases configured in your code.
    - Partha
    LabVIEW - Wires that catch bugs!

  • SAVE AS BUTTON WITH JAVA SCRIPT FOR MOUSE UP EVENT

    Please any one help with complete code for "SAVE AS" button to auto save the acrobat form in a user specified path
    with unique name or incremental name.Please post only full script for MOUSE UP event.

    Thanks George but i need an example.my actual need is
    i have created a SAVE INVOICE button.i have set the action"Mouse up" to run a Java script.
    Now i need a scriprt for the same.
    If i press that SAVE INVOICE button.the fie should save on "C:\Users\MUNNA\Desktop" automatically
    with unique name and the name should not remain same for next Save.because it overwrites the previous
    file so please post an example pdf with same.

  • HOW TO CREATE  and  USE EVENTS IN WORKFLOWS .

    HOW TO CREATE  and  USE EVENTS IN WORKFLOWS with the help of classes.
    What i am doing is..
    open se24
    event tab->event name->parameters
    method tab->method name->event handler->copy parameters
    interface tab->if_workflow->enter
    tell me what else to do step by step
    Another important thing is that HOW to use these class events to trigger the workflows.
    REPLY ASAP
    THXS IN ADVANCE

    Hi,
    Pl. see this blog...
    Raising ABAP OO events for workflow
    Regards,
    JOy.

  • What is the recommended way to handle mouse click events for custom nodes that subclass Panes?

    Hi,
    I have created a custom node that is a StackPane containing a Label on top of a Polygon.
    import javafx.scene.control.Label;
    import javafx.scene.layout.StackPane;
    import javafx.scene.paint.Color;
    import javafx.scene.shape.Polygon;
    public class CustomHexagon extends StackPane {
        private Polygon hexagon;
        private Label overlayText;
        public CustomHexagon( String text, double... points ) {
            this.hexagon = new Polygon( points );
            this.overlayText = new Label( text );
            overlayText.setStyle( "-fx-font-weight: bold;" );
            hexagon.setStroke( Color.GREEN );
            hexagon.setStrokeWidth( 5.0 );
            hexagon.setFill( Color.WHITE );
            this.getChildren().addAll( hexagon, overlayText );
    // Lays out the node where it should be according to the points provided for the Polygon.
            this.setLayoutX( points[0] - getLayoutBounds().getMinX() );
            this.setLayoutY( points[1] - getLayoutBounds().getMinY() );
    // Show the border of the StackPane.
            this.setStyle( "-fx-border-color: black; -fx-border-width: 1; -fx-border-style: dashed;");
        public String getOverlayText() {
            return overlayText.getText();
    I want to display a tesselation of these custom hexagons. Because a CustomHexagon is a StackPane, not a Polygon, MouseClick events can be picked up when the mouse is clicked outside of the stroke of the hexagon but still within the StackPane (which takes up a rectangle larger than the hexagon). The following program demonstrates this.
    public class Main extends Application {
        @Override
        public void start(Stage primaryStage) {     
            Group root = new Group();
            CustomHexagon[] hexagons = {
                new CustomHexagon( "00", 10.0, 10.0, 30.0, 10.0, 40.0, 27.3205080756, 30.0, 44.6410161512, 10.0, 44.6410161512, 0.0, 27.3205080756 ),
                new CustomHexagon( "01", 70.0, 10.0, 90.0, 10.0, 100.0, 27.3205080756, 90.0, 44.6410161512, 70.0, 44.6410161512, 60.0, 27.3205080756 ),
                new CustomHexagon( "02", 130.0, 10.0, 150.0, 10.0, 160.0, 27.3205080756, 150.0, 44.6410161512, 130.0, 44.6410161512, 120.0, 27.3205080756 ),
                new CustomHexagon( "03", 190.0, 10.0, 210.0, 10.0, 220.0, 27.3205080756, 210.0, 44.6410161512, 190.0, 44.6410161512, 180.0, 27.3205080756 ),
                new CustomHexagon( "04", 250.0, 10.0, 270.0, 10.0, 280.0, 27.3205080756, 270.0, 44.6410161512, 250.0, 44.6410161512, 240.0, 27.3205080756 ),
                new CustomHexagon( "10", 40.0, 27.3205080756, 60.0, 27.3205080756, 70.0, 44.6410161512, 60.0, 61.961524226799995, 40.0, 61.961524226799995, 30.0, 44.6410161512 ),
                new CustomHexagon( "11", 100.0, 27.3205080756, 120.0, 27.3205080756, 130.0, 44.6410161512, 120.0, 61.961524226799995, 100.0, 61.961524226799995, 90.0, 44.6410161512 ),
                new CustomHexagon( "12", 160.0, 27.3205080756, 180.0, 27.3205080756, 190.0, 44.6410161512, 180.0, 61.961524226799995, 160.0, 61.961524226799995, 150.0, 44.6410161512 ),
                new CustomHexagon( "13", 220.0, 27.3205080756, 240.0, 27.3205080756, 250.0, 44.6410161512, 240.0, 61.961524226799995, 220.0, 61.961524226799995, 210.0, 44.6410161512 ),
                new CustomHexagon( "14", 280.0, 27.3205080756, 300.0, 27.3205080756, 310.0, 44.6410161512, 300.0, 61.961524226799995, 280.0, 61.961524226799995, 270.0, 44.6410161512 ),
                new CustomHexagon( "20", 10.0, 44.6410161512, 30.0, 44.6410161512, 40.0, 61.961524226799995, 30.0, 79.2820323024, 10.0, 79.2820323024, 0.0, 61.961524226799995 ),
                new CustomHexagon( "21", 70.0, 44.6410161512, 90.0, 44.6410161512, 100.0, 61.961524226799995, 90.0, 79.2820323024, 70.0, 79.2820323024, 60.0, 61.961524226799995 ),
                new CustomHexagon( "22", 130.0, 44.6410161512, 150.0, 44.6410161512, 160.0, 61.961524226799995, 150.0, 79.2820323024, 130.0, 79.2820323024, 120.0, 61.961524226799995 ),
                new CustomHexagon( "23", 190.0, 44.6410161512, 210.0, 44.6410161512, 220.0, 61.961524226799995, 210.0, 79.2820323024, 190.0, 79.2820323024, 180.0, 61.961524226799995 ),
                new CustomHexagon( "24", 250.0, 44.6410161512, 270.0, 44.6410161512, 280.0, 61.961524226799995, 270.0, 79.2820323024, 250.0, 79.2820323024, 240.0, 61.961524226799995 ),
                new CustomHexagon( "30", 40.0, 61.961524226799995, 60.0, 61.961524226799995, 70.0, 79.2820323024, 60.0, 96.602540378, 40.0, 96.602540378, 30.0, 79.2820323024 ),
                new CustomHexagon( "31", 100.0, 61.961524226799995, 120.0, 61.961524226799995, 130.0, 79.2820323024, 120.0, 96.602540378, 100.0, 96.602540378, 90.0, 79.2820323024 ),
                new CustomHexagon( "32", 160.0, 61.961524226799995, 180.0, 61.961524226799995, 190.0, 79.2820323024, 180.0, 96.602540378, 160.0, 96.602540378, 150.0, 79.2820323024 ),
                new CustomHexagon( "33", 220.0, 61.961524226799995, 240.0, 61.961524226799995, 250.0, 79.2820323024, 240.0, 96.602540378, 220.0, 96.602540378, 210.0, 79.2820323024 ),
                new CustomHexagon( "34", 280.0, 61.961524226799995, 300.0, 61.961524226799995, 310.0, 79.2820323024, 300.0, 96.602540378, 280.0, 96.602540378, 270.0, 79.2820323024 ),
                new CustomHexagon( "40", 10.0, 79.2820323024, 30.0, 79.2820323024, 40.0, 96.602540378, 30.0, 113.9230484536, 10.0, 113.9230484536, 0.0, 96.602540378 ),
                new CustomHexagon( "41", 70.0, 79.2820323024, 90.0, 79.2820323024, 100.0, 96.602540378, 90.0, 113.9230484536, 70.0, 113.9230484536, 60.0, 96.602540378 ),
                new CustomHexagon( "42", 130.0, 79.2820323024, 150.0, 79.2820323024, 160.0, 96.602540378, 150.0, 113.9230484536, 130.0, 113.9230484536, 120.0, 96.602540378 ),
                new CustomHexagon( "43", 190.0, 79.2820323024, 210.0, 79.2820323024, 220.0, 96.602540378, 210.0, 113.9230484536, 190.0, 113.9230484536, 180.0, 96.602540378 ),
                new CustomHexagon( "44", 250.0, 79.2820323024, 270.0, 79.2820323024, 280.0, 96.602540378, 270.0, 113.9230484536, 250.0, 113.9230484536, 240.0, 96.602540378 )
            EventHandler<MouseEvent> mouseClickedHandler = new EventHandler<MouseEvent>() {
                @Override
                public void handle(MouseEvent t) {
                    CustomHexagon h = (CustomHexagon) t.getSource();
                    System.out.println( h.getOverlayText() );
            for ( CustomHexagon hexagon : hexagons ) {
                hexagon.setOnMouseClicked( mouseClickedHandler );
            root.getChildren().addAll( hexagons );
            Scene scene = new Scene(root, 400, 400);
            primaryStage.setTitle("Example");
            primaryStage.setScene(scene);
            primaryStage.show();
        public static void main(String[] args) {
            launch(args);
    After running this program, when one clicks within the intersection of two StackPanes (borders shown by dashed lines), the target of the mouse click event will be the StackPane on top as determined by the order in which they were added to their parent.
    This is a problem because there is only a small "T" shaped area within each hexagon that when clicked will target that hexagon with an event, rather than adjacent nodes.
    I would appreciate any reccomendations to solve this problem.
    Thanks,
    James Giller

    Hello, this is an evergreen. Just call setPickOnBounds(false) on the CustomHexagon.
    An issue tracking this problem is open here: https://javafx-jira.kenai.com/browse/RT-17024

  • Mouse over event listener? in Flash CS4 (AS3)

    Hi,
    I was wondering if there is such a thing as a mouse over listener.
    So that it would execute code when the mouse rolls over(and maybe also execute code when the mouse moves away again)
    Thank you for any help.

    yes, there are mouseover and rollover events, as well as, their "out" events:
    MouseEvent.MOUSE_OVER
    MouseEvent.ROLL_OVER

Maybe you are looking for