Mouse Enter/Exit Events

Hi,
I've got a question regarding mouse enter/exit events. Specifically, I would like to know why so many mouse enter/exit events are generated. Suppose you stack multiple Panes like this:
@Override
public void start(Stage frame) throws Exception {
     Pane root = new Pane();
     frame.setScene(new Scene(root));
     addEnterExitHandlers(root, "root");
     Pane fst = new Pane();
     root.getChildren().add(fst);
     addEnterExitHandlers(fst, "first");
     Pane snd = new Pane();
     fst.getChildren().add(snd);
     addEnterExitHandlers(snd, "second");
     Rectangle rect = new Rectangle(0, 0, 100, 100);
     snd.getChildren().add(rect);
     addEnterExitHandlers(rect, "rect");
     frame.show();
The addEnterExitHandlers() method simply registers event handlers for MouseEvent.MOUSE_ENTERED_TARGET and MouseEvent.MOUSE_EXITED_TARGET which print the event type's name together with the specified string.
The resulting output looks like this:
root MOUSE_ENTERED
first MOUSE_ENTERED
root MOUSE_ENTERED_TARGET
second MOUSE_ENTERED
first MOUSE_ENTERED_TARGET
root MOUSE_ENTERED_TARGET
rect MOUSE_ENTERED
second MOUSE_ENTERED_TARGET
first MOUSE_ENTERED_TARGET
root MOUSE_ENTERED_TARGET
root MOUSE_EXITED
first MOUSE_EXITED
root MOUSE_EXITED_TARGET
second MOUSE_EXITED
first MOUSE_EXITED_TARGET
root MOUSE_EXITED_TARGET
rect MOUSE_EXITED
second MOUSE_EXITED_TARGET
first MOUSE_EXITED_TARGET
root MOUSE_EXITED_TARGET
This output is not accurate, because I inserted empty lines to visually group related elements.
As you can see, a MOUSE_ENTERED event is fired for every node and all parent nodes receive MOUSE_ENTER_TARGET events. I just thought that it would be sufficient to only fire the last group of enter/exit events, respectively, i.e.:
rect MOUSE_ENTERED
second MOUSE_ENTERED_TARGET
first MOUSE_ENTERED_TARGET
root MOUSE_ENTERED_TARGET
rect MOUSE_EXITED
second MOUSE_EXITED_TARGET
first MOUSE_EXITED_TARGET
root MOUSE_EXITED_TARGET
Is there a specific reason for the behavior?
Best regards,
Matthias

Hi Matthias,
yes, there is a reason for this. In vast majority of use-cases, the entered/exited handlers are added on a node to handle the case when mouse enters/exits the node. The _TARGET variants tell you "this node or some of its children was entered/exited", which is not quite it. So right now, if you want to check that fst was entered, you just do:
fst.setOnMouseEntered(new EventHandler<MouseEvent>() {
  @Override public void handle(MouseEvent e) {
    // your code
If we generated only the last group of events as you suggest, you would have to do:
fst.addEventHandler(MouseEvent.MOUSE_ENTERED_TARGET, new EventHandler<MouseEvent>() {
  @Override public void handle(MouseEvent e) {
    if (e.getTarget() == fst) {
      // your code
Even if we added the convenience handlers for the _TARGET variants (setOnMouseEnteredTarget), having to always check the target would be pretty annoying.
Cheers,
Pavel

Similar Messages

  • Change alpha on mouse enter/exit

    Hi,
    I have separate JPanels that I would like to be fully transparent until the user mouses over any one of them, at which point that one would become 50% transparent. I'm trying to achieve this with the following code:
        public void mouseEntered(MouseEvent e) {
            Color temp = e.getComponent().getBackground();
            int r = temp.getRed();
            int g = temp.getGreen();
            int b = temp.getBlue();
            e.getComponent().setBackground(new Color(r,g,b,50));
        public void mouseExited(MouseEvent e) {
            Color temp = e.getComponent().getBackground();
            int r = temp.getRed();
            int g = temp.getGreen();
            int b = temp.getBlue();
            e.getComponent().setBackground(new Color(r,g,b,0));
        }This does nothing on each mouse exit, yet increases the opacity on each mouse entrance. So if I pass the mouse over a JPanel repeatedly it will move closer and closer to 100% opacity with each mouse entrance.
    I have tried using negative numbers for the alpha, which didn't work, and I have also tried using both of the following:
    setBackground(new Color(r,g,b,0));
    this.setBackground(new Color(r,g,b,0));All of which have the same problem. So I have two questions:
    (1) Is there even a difference between the e.getComponent().setBackground(), this.setBackground(), and setBackground() approaches here?
    (2) How can I fix this so that the alpha toggles between 0 and 50?
    Thanks!

    When you don't fill the content area with opaque pixels, you are responsible for clearing the background.import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.SwingUtilities;
    public class AlphaBackground {
       JPanel panel;
       void makeUI() {
          panel = new JPanel() {
             @Override
             protected void paintComponent(Graphics g) {
                g.clearRect(0, 0, getWidth(), getHeight());
                super.paintComponent(g);
          panel.setBackground(Color.RED);
          panel.addMouseListener(new MouseAdapter() {
             @Override
             public void mouseEntered(MouseEvent e) {
                Color temp = e.getComponent().
                        getBackground();
                int r = temp.getRed();
                int g = temp.getGreen();
                int b = temp.getBlue();
                e.getComponent().
                        setBackground(new Color(r, g, b, 50));
             @Override
             public void mouseExited(MouseEvent e) {
                Color temp = e.getComponent().
                        getBackground();
                int r = temp.getRed();
                int g = temp.getGreen();
                int b = temp.getBlue();
                e.getComponent().
                        setBackground(new Color(r, g, b, 0));
          JFrame frame = new JFrame("");
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.setSize(400, 400);
          frame.add(panel, BorderLayout.CENTER);
          frame.add(new JLabel("Top"), BorderLayout.NORTH);
          frame.add(new JLabel("Bottom"), BorderLayout.SOUTH);
          frame.setLocationRelativeTo(null);
          frame.setVisible(true);
       public static void main(String[] args) {
          SwingUtilities.invokeLater(new Runnable() {
             @Override
             public void run() {
                new AlphaBackground().makeUI();
    }db

  • When mouse Entered, get block/name.

    I need to create some java code that, on, when-mouse-entered, and when-mouse-exited, the java code will pass the item's block name and item name back to the form.
    Ideally I would like to create generic code to use with any item. i.e. I don't want to 'hard-code' block and item name's into the java code.
    Example:
    -in forms, create a text item (:BLOCK1.ITEM12)
    -set item's implementation class to RecognizeMouseEnteredExited
    -When mouse entered/exited, pass items block/name of item to Oracle forms.
    Assumptions:
    I am assuming I need to tap into Oracle Forms IView interface to extract the item id and name, but as much assistance with the actual code would be GREAT!
    Thanks

    You can get it with :system.record_number. To determine the position in the multi-record block use get_block_property('block', top_record)

  • Mouse Drag in JDialog produces Mouse Enter & Mouse Exit events in JFrame.

    Hi, all.
    Do I have a misconception here? When I drag the mouse in a modal JDialog, mouseEntered and mouseExited events are being delivered to JComponents in the parent JFrame that currently happens to be beneath that JDialog. I would not have expected any events to be delivered to any component not in the modal JDialog while that JDialog is displayed.
    I submitted this as a bug many months ago, and have heard nothing back from Sun, nor can I find anything similar to this in BugTraq.
    Here is sample code:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    * This class demonstrates what I believe are TWO bugs in Mouse Event handling in Swing
    * 1.1.3_1, 1.1.3_2, 1.1.3_3, and 1.4.0.
    * 1) When a MODAL JDialog is being displayed, and the cursor is DRAGGED from the JDialog
    *    into and across the parent JFrame, Mouse Enter and Mouse Exit events are given to
    *    the parent JFrame and/or it's child components.  It is my belief that NO such events
    *    should be delivered, that modal dialogs should prevent ANY user interaction with any
    *    component NOT in the JDialog.  Am I crazy?
    *    You can reproduce this simply by running the main() method, then dragging the cursor
    *    from the JDialog into and across the JFrame.
    * 2) When a MODAL JDialog is being displayed, and the cursor is DRAGGED across the JDialog,
    *    Mouse Enter and Mouse Exit events are given to the parent JFrame and/or it's child
    *    components.  This is in addition to the problem described above.
    *    You can reproduce this by dismissing the initial JDialog displayed when the main()
    *    method starts up, clicking on the "Perform Action" button in the JFrame, then dragging
    *    the cursor around the displayed JDialog.
    * The Mouse Enter and Mouse Exit events are reported via System.err.
    public class DragTest
        extends JFrame
        public static void main(final String[] p_args)
            new DragTest();
        public DragTest()
            super("JFrame");
            WindowListener l_windowListener = new WindowAdapter() {
                public void windowClosing(final WindowEvent p_evt)
                    DragTest.this.dispose();
                public void windowClosed(final WindowEvent p_evt)
                    System.exit(0);
            MouseListener l_mouseListener = new MouseAdapter() {
                public void mouseEntered(final MouseEvent p_evt)
                    System.err.println(">>> Mouse Entered: " + ((Component)p_evt.getSource()).getName() );
                public void mouseExited(final MouseEvent p_evt)
                    System.err.println(">>> Mouse Exited: " + ((Component)p_evt.getSource()).getName() );
            JPanel l_panel1 = new JPanel();
            l_panel1.setLayout( new BorderLayout(50,50) );
            l_panel1.setName("JFrame Panel");
            l_panel1.addMouseListener(l_mouseListener);
            JButton l_button = null;
            l_button = new JButton("JFrame North Button");
            l_button.setName(l_button.getText());
            l_button.addMouseListener(l_mouseListener);
            l_panel1.add(l_button, BorderLayout.NORTH);
            l_button = new JButton("JFrame South Button");
            l_button.setName(l_button.getText());
            l_button.addMouseListener(l_mouseListener);
            l_panel1.add(l_button, BorderLayout.SOUTH);
            l_button = new JButton("JFrame East Button");
            l_button.setName(l_button.getText());
            l_button.addMouseListener(l_mouseListener);
            l_panel1.add(l_button, BorderLayout.EAST);
            l_button = new JButton("JFrame West Button");
            l_button.setName(l_button.getText());
            l_button.addMouseListener(l_mouseListener);
            l_panel1.add(l_button, BorderLayout.WEST);
            l_button = new JButton("JFrame Center Button");
            l_button.setName(l_button.getText());
            l_button.addMouseListener(l_mouseListener);
            l_panel1.add(l_button, BorderLayout.CENTER);
            JButton l_actionButton = l_button;
            Container l_contentPane = this.getContentPane();
            l_contentPane.setLayout( new BorderLayout() );
            l_contentPane.add(l_panel1, BorderLayout.NORTH);
            JPanel l_panel2 = new JPanel();
            l_panel2.setName("JDialog Panel");
            l_panel2.addMouseListener(l_mouseListener);
            l_panel2.setLayout( new BorderLayout(50,50) );
            l_panel2.add( new JButton("JDialog North Button"),  BorderLayout.NORTH  );
            l_panel2.add( new JButton("JDialog South Button"),  BorderLayout.SOUTH  );
            l_panel2.add( new JButton("JDialog East Button"),   BorderLayout.EAST   );
            l_panel2.add( new JButton("JDialog West Button"),   BorderLayout.WEST   );
            l_panel2.add( new JButton("JDialog Center Button"), BorderLayout.CENTER );
            final JDialog l_dialog = new JDialog(this, "JDialog", true);
            WindowListener l_windowListener2 = new WindowAdapter() {
                public void windowClosing(WindowEvent p_evt)
                    l_dialog.dispose();
            l_dialog.addWindowListener(l_windowListener2);
            l_dialog.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
            l_dialog.getContentPane().add(l_panel2, BorderLayout.CENTER);
            l_dialog.pack();
            Action l_action = new AbstractAction() {
                { putValue(Action.NAME, "Perform Action (open dialog)"); }
                public void actionPerformed(final ActionEvent p_evt)
                    l_dialog.setVisible(true);
            l_actionButton.setAction(l_action);
            this.addWindowListener(l_windowListener);
            this.pack();
            this.setLocation(100,100);
            this.setVisible(true);
            l_dialog.setVisible(true);
    }(Too bad blank lines are stripped, eh?)
    Thanks in advance for any insights you may be able to provide.
    ---Mark

    I guess we can think of this as one problem. When mouse dragged, JFrame also (Parent) receives events. If i understood correctly, what happens here is, Modal dialog creates its own event pump and Frame will be having its own. See the source code of Dialog's show() method. It uses an interface called Conditional to determine whether to block the events or yield it to parent pump.
    Here is the Conditional code and show method code from java.awt.dialog for reference
    package java.awt;
    * Conditional is used by the EventDispatchThread's message pumps to
    * determine if a given pump should continue to run, or should instead exit
    * and yield control to the parent pump.
    * @version 1.3 02/02/00
    * @author David Mendenhall
    interface Conditional {
        boolean evaluate();
    /////show method
        public void show() {
            if (!isModal()) {
                conditionalShow();
            } else {
                // Set this variable before calling conditionalShow(). That
                // way, if the Dialog is hidden right after being shown, we
                // won't mistakenly block this thread.
                keepBlocking = true;
                if (conditionalShow()) {
                    // We have two mechanisms for blocking: 1. If we're on the
                    // EventDispatchThread, start a new event pump. 2. If we're
                    // on any other thread, call wait() on the treelock.
                    if (Toolkit.getEventQueue().isDispatchThread()) {
                        EventDispatchThread dispatchThread =
                            (EventDispatchThread)Thread.currentThread();
                           * pump events, filter out input events for
                           * component not belong to our modal dialog.
                           * we already disabled other components in native code
                           * but because the event is posted from a different
                           * thread so it's possible that there are some events
                           * for other component already posted in the queue
                           * before we decide do modal show. 
                        dispatchThread.pumpEventsForHierarchy(new Conditional() {
                            public boolean evaluate() {
                                return keepBlocking && windowClosingException == null;
                        }, this);
                    } else {
                        synchronized (getTreeLock()) {
                            while (keepBlocking && windowClosingException == null) {
                                try {
                                    getTreeLock().wait();
                                } catch (InterruptedException e) {
                                    break;
                    if (windowClosingException != null) {
                        windowClosingException.fillInStackTrace();
                        throw windowClosingException;
        }I didn't get exactly what is happening but this may help to think further

  • Not detecting mouse exit events

    I'm developing a Java application that implements an 'auto-hide' functionality - similar to that of the Office Shortcut bar - such that when the mouse moves outside of the application frame the window auto-hides. I'm using the Mouse Exit event to detect when the mouse moves outside of the the application frame and then I 'hide' the window (or rather resize it to 2 pixels high) so I can then detect the Mouse Entered event to restore the window.
    This works OK but occasionally if I move the mouse quick enough the exited event isn't detected and the window doesn't always hide.
    Are there any other ways of detecting if the mouse moves outside of the application frame (so I can also trigger my 'hide' function) without relying on other events such as windowLostFocus.
    Thanks,
    Richard.

    I have one suggestion:
    Check that the component that you use to monitor mouse exit and enter events has at least one pixel visible from all sides (most layout managers allow a border (not a Border class or subclass) that is not occupied by child subcomponent).
    For example if you will place some other component in container directly so some side then mouse enter and exit events will be fired on that component and not on the container.

  • Different 'mouse enter' event / 'set busy' vi behaviour in LV8?

    In my program, I used the mouse curcor 'set busy' vi to lock the front panel during a measurement.  However, I did want the 'cancel measurement' button to be available.   I solved that by adding a 'mouse enter' and 'mouse leave' event for that button, that would enable the mouse when it was over the button.  (And disable when it left again)
    Worked fine in LV7, but it seems that in Labview 8, this little trick doesn't work anymore...   
    Apparantly, now the 'mouse enter' event only fires when the cursor isn't set to 'busy'. How do I perform something similar to my old trick in Labview 8? 

    I too had a similar issue when upgrading my application source code from LabVIEW 7.1 to 8.0.  There are a couple of things you could try.
    1) Keep calling the "set cursor busy" vi, but don't disable mouse clicks (a boolean input to the set busy VI). Now add a new event to your event structure to monitor the panel for any "mouse down?" events.  Whenever this event occurs, the user is trying to click somewhere, so wire a TRUE to the "Disabled?" input of the event.  Now to keep your cancel button from being filtered out, add some code to determine if the x,y coordinates of the mouse down event are over your cancel button, if so then don't filter this event.
    2) Keep calling the "set cursor busy" vi, but again don't disable the mouse clicks.  Now whenever you want to disable all user events on your front panel controls, open a reference to each front panel control and set it to disabled (all except the cancel button of course).  This sounds difficult, but it is actually really easy.  There is a VI property you can read to get references to each FP control.
    I personally used the 2nd option in my code to do something similar.  I've attached the VI you can use to disable all you FP controls (with exceptions), and also an example of how I used it.  It's a very small VI.
    Hope this helps.
    Attachments:
    SetAllCtrlsToDisabled.zip ‏24 KB

  • MouseExit event fires exit event also,code executes 2 times

    Hi All,
    I have put some code to validate account number user has just entered in exit event of account number field which is in a repeater grid in Form guide.
    I notice that if I tab out it executes the code 2 times, if I use mouse to enter into the field don't change anything and then click on next field it executes again (2 times). looks like exit event is fired on mouse exit also, but I don't want that.
    I am perplexed that exit event is firing 2 times and don't know the reason for it.
    Please help to identify why code fires 2 times and how to avoid mouse exit firing exit event as well
    I hope I am not asking crazy thing here.
    Thanks
    Manoj

    Hi Steve,
    1) Are reseting on the cell or field? Is there data binding on the cell or field? Is there a calculation on the cell or field?
      There is data binding on this field. Well this item is in a subform and exists as a repeating subform record element. So I don't
      know what to call it. I am including my form and data content so that you can see it.
    2)
         How can I do that, that is set a invalid message with red color etc?
         No. That is why I stated you can either set focus or change the field colour but not both, without customizing the Form Guide.
         Okay what I meant was not show a message with Alert or hostmessage call then set focus works but also set the invalid message dynamically
          via  some property so that it show the red color message as we did when we set the validation pattern.
    3) exit event - I am attaching my form and data file for you to see. I have a schema attached to the form but can't send you that. Data file is included.
    4) Is there a link where we can learn more about customizing or if you have enough samples for customization. I did see the standard adobe doc about it and that helped me a lot, but was wondering if you did anything or others in your team  as prototypes through which we cam learn more.
    5) The form 401db.xdp is converted to .xml so that i can attach to the email. Please rename again to xdp.
    I can't thank you enough for looking into this. God bless you!
    Regards
    Manoj
    PS. Happy day for me to get your attention.

  • When-mouse-enter forms 10g

    Hi, everybody.
    I have a problem with forms 10g (web) in any sub-version. The problem is that the events when-mouse (enter, leave, ...) does not seem to get fired.
    Is there anything I can do to solve the problem (a parameter to be set, anything to do in the form).
    Any help will be appreciated,
    Thank you.

    -> Why it is still documented? Will we get back a client server forms?
    I wish! But I am sure it is hopeless. They probably need to leave the when-mouse-enter documentation for backward compatibility -- old forms compiled and running in the Web Forms environment. The traffic would be horrendous. I have WME and WML triggers running, and on some forms, rolling the mouse across the canvas causes a lot of flickering -- item prompts flicker. And then there is the mouse-x,y-pos and when-mouse-move. Those are supported in 6i Client/Server, too. I used it to create a drag and drop functionality. Man, does THAT cause some massive trigger firing!!! Trust me, it would NOT work in a web environment.
    And yes, "Hai" is apparently something like an abbreviation for Hello -- a little more formal and polite than Hi. Its use still puzzles me, but apparently that is the reasoning of those who use it.        ?:|

  • When-mouse-enter in 10g

    I have got Forms 10g installed and tried to use WHEN-MOUSE-ENTER, it didn't work. I looked up the online help and got a breakdown on usage. Couldn't see what i was doing wrong, googled found out WME does not work in 9i. My question does it work in 10g and if it doesn't why the hell don't oracle update their Online help docs which are installed with the product.
    Gus

    That's all well and good, Suresh.  Now please look up the on-line documentation in the latest release of Forms Builder 10g.
    <P>You will find the following.  Nowhere does it warn NOT to use the trigger!  <font color=red>(Jan, are you reading this?)</font>
    <P>When-Mouse-Enter Trigger<br>
    Description<br>
    Fires when the mouse enters an item or canvas if one of the following events occurs:<br>
    *  if attached to the form, when the mouse enters any canvas or item in the form<br>
    *  if attached to a block, when the mouse enters any item in the block<br>
    *  if attached to an item, when the mouse enters the item

  • Mouse enter and mouse leave not detected in small controls

    Look at the attached VI. There is a thin boolean with mouse enter and mouse leave events which are not always detected when moving over the control quickly. I'm not sure whether this behavior originates from LV (7.0) or from the way XP handles the mouse movement, but I would definitely call this a bug in the sense that the mouse does "enter" and "leave" the control and the events are not fired.
    My guess is that windows does not register all the points that mouse goes through, but only does so periodically. If it happens that 2 adjacent points are on 2 different sides of the control, LV can't recognize the enter and leave events. But that's just a guess.
    Try to take over the world!
    Attachments:
    event bug1.vi ‏26 KB

    I put together a quick test, but I'm not sure what the results mean.
    Lynn, one of the tests uses windows API (although you can run the other one).
    Shane, sorry, only 7.1 on this PC.
    Message Edited by tst on 07-12-2005 08:38 PM
    Try to take over the world!
    Attachments:
    event bug25.vi ‏40 KB

  • Did a tab key initiate exit event?

    Hi,
    I have a table on my form. If the user hits the tab key on the last field of the last row I want to add another row (as this happens in MS-Word tables for example).
    My problem is: How do I find out what inititated an exit event on my field? Was it a tab key or did the user click with the mouse someplace else?
    I would like to write something like
         if (xfa.event.trigger = "TABKEY") { ... }
    Hope someone had had the same problem already.
    Uli

    Excellent. I tried it and it works! Thanks a lot!
    Once you know the key word you find the right documentation. In case someone else has the same problems: Here is more information:
    http://livedocs.adobe.com/livecycle/8.2/acrobat_designer/wwhelp/wwhimpl/common/html/wwhelp .htm?context=Adobe_LiveCycle_Designer_Help&file=001421.html
    which is the same as
    http://www.adobe.com/devnet/livecycle/articles/Adobe_XML_Form_Object_Model_Reference.pdf

  • Mouse enter/timer expired loses item focus

    The triggers when-mouse-enter and when-timer-expired cause the current item focus to temporarily move to the module where the event was triggered if executing a multi-forms application. Also, if the user minimizes the application and he is using for example, Microsoft Excel, the cursor disappears because the focus goes to Oracle Forms due to this problem. This is irritating many users... Is there a workaround for this problem? I don't understand why this is necessary because these triggers are not interacting with any visual resource or instruction!
    null

    We had a similar problem but it turned out to be caused by a sychronize command within the trigger code rather the trigger itself.
    In toher words it could be what you are doing and not the trigger itself.
    Regards,
    Mike

  • JInternalFrame, auto activate when mouse enters the frame

    Hi, is there a simple way to make the JInternalFrames automatically get activated as soon as the mouse enters them?
    I would like this in general, but specifically I need it for a drag'n drop operation. I want to drag an item from a JTable in one frame to another JTable in another frame. This works perfectly, even if the recepient frame is not active, what doesn't work is to scroll the recepient JTable using the mouse scrollwheel before dropping the item. This would work if the frame was active. (I tested this by temporarily placing the two JTables in the same internal frame)

    Thanks, this looks promising, unfortunately I read the stuff about glass panes but I can't seem to make it work anyway. As I understand it the default glass panes should block all events. This does not happen, even when I turn the glass panes visible on all JInternalFrames and the main JFrame. Everything is just like it was before... With this I mean that mouse events were sent to the mouse listener I added to the glass pane, but the mouse events also went to the underlying JInternalFrames. And when a drag'n drop was active, no mouse events are reported. What glass pane should I make visible for it to intercept all events?

  • How do I enter an event in Calendar and repeat it every 3rd day

    How do I enter an event in Calendar and repeat it every 3rd day

    Hello PatrickMaryAnn,
    Thanks for the question, and welcome to Apple Support Communities.
    When editing or creating an event, choose Repeat > Custom… - then choose "Daily" and enter Every 3 days.
    Calendar: Update or delete an event
    http://support.apple.com/kb/PH11509
    Thanks,
    Matt M.

  • ICal will not let me enter an event on a certain date.

    Ok, so I'm trying to enter an event on Sunday the 7th of October on my MBP's iCal (5.0.3) and every time I double click on the date in month or week view, it leaps to Saturday the 6th.  I've tried entering the event on my iPad and it shows up on the right date there, but when it goes to the cloud and comes to my MBP the event has leapt over to Saturday the 6th again!!  I have tried refreshing all and then I deleted my p.list and logged out and then in again, but I'm still unable to enter any events for Sunday the 7th on my MBP's iCal. 
    Anybody got any clues? 

    Sometimes iCal doesn't handle properly days when the clock changes; Sunday 7th October is your next change. Try changing your time zone to another with the same offset from UTC - eg Papua. I think it is a fault in the time zone file, rather than in iCal itself.

Maybe you are looking for