7 Replies Latest reply on Mar 22, 2005 9:53 PM by camickr

    Lock JInternalPane

    843804
      I have a JInternalPane that I want to fix in place or lock in place.
      Is there a function or way I can force it to be immovable by the user - fixed in place?
      cheers
      David
        • 1. Re: Lock JInternalPane
          camickr
          I assume you mean JInternalFrame?

          Remove the MouseListener from the JInternalFrame:
          JInternalFrame f = frames[0];
          BasicInternalFrameUI ui = (BasicInternalFrameUI)f.getUI();
          Component north = ui.getNorthPane();
          MouseMotionListener[] actions = (MouseMotionListener[])north.getListeners(MouseMotionListener.class);
          for (int i = 0; i < actions.length; i++)
               north.removeMouseMotionListener( actions[i] );
          • 2. Re: Lock JInternalPane
            843804
            I assume you mean JInternalFrame?

            Remove the MouseListener from the JInternalFrame:
            JInternalFrame f = frames[0];
            BasicInternalFrameUI ui =
            (BasicInternalFrameUI)f.getUI();
            Component north = ui.getNorthPane();
            MouseMotionListener[] actions =
            (MouseMotionListener[])north.getListeners(MouseMotionL
            istener.class);
            for (int i = 0; i < actions.length; i++)
                 north.removeMouseMotionListener( actions[i] );
            Yup, sorry jinternalframe is what I meant.

            Ok that does lock it which is great, the only problem now, is when I click on the internal frame - it initially disappears (you can still find it on the toolbar on the bottom) - but it doesn't remain as the active window (when clicked on) - (I'm putting it inside a JWindow if that affects anything?)
            cheers for the help.
            • 3. Re: Lock JInternalPane
              camickr
              JInternalFrame should be added to JDesktopPane.

              How to Use Internal Frames:

              http://java.sun.com/docs/books/tutorial/uiswing/components/internalframe.html

              If you mean your adding the JDesktopPane to a JWindow, then I don't know what the problem might be I've never tried that.
              • 4. Re: Lock JInternalPane
                843804
                I've tried putting it in a desktop pane like the following:
                jInternalFrame2.setBounds(0, 0, 600, 500);
                jDeskTest.setBounds(0,0,600,500);
                jWindowTest.setBounds(200,120,600,500);
                
                jDeskTest.add(jInternalFrame2);
                jWindowTest.getContentPane().add(jDeskTest);
                
                BasicInternalFrameUI ui = (BasicInternalFrameUI)jInternalFrame2.getUI();
                Component north = ui.getNorthPane();
                MouseMotionListener[] actions=(MouseMotionListener[])north.getListeners(MouseMotionListener.class);
                for (int i = 0; i < actions.length; i++)
                     north.removeMouseMotionListener( actions[i] );
                
                jWindowTest.setVisible(true);
                jDeskTest.setVisible(true);
                I add all my components to the internalframe, then add it to the desktoppane and then add that to the windowframe...its still giving me the problem I mentioned above...
                • 5. Re: Lock JInternalPane
                  camickr
                  I've never seen that behaviour and am not even going to try to guess whats wrong based on the lines of code you posted. If you post a 15 - 20 line demo program the illustrates your behaviour then I might take a look at it.
                  • 6. Re: Lock JInternalPane
                    843804
                    Well, I'd have to post the whole project, because its going to be hard to emulate my problem in around 15-20 lines of code.
                    I'll play more, and see if other people have further thoughts or solutions...
                    cheers
                    • 7. Re: Lock JInternalPane
                      camickr
                      Well, I'd have to post the whole project, because its going to be hard to emulate my problem in around 15-20 lines of code.
                      Thats the point. You may or may not be able to emulate the problem.

                      If you do emulate the problem then you have code to post on the forum.

                      If you don't emulate the problem then you've proven to yourself that a very simple application works normally. Now the next step is to compare this code with your existing code to see whats different. If you can't see whats different I don't know how you expect use to "guess" what your code looks like.