0

I am creating and application in Java using Netbeans. I have 1 jFrame on which there is few jmenus and a jdesktoppane and jinternalframes. Now my problem is I am not able to set jInternalFrame at the centre of jDesktopPane. I gor some help from stackoverflow post which is mentioned like this

Dimension desktopSize = desktopPane.getSize();
Dimension jInternalFrameSize = jInternalFrame.getSize();
jInternalFrame.setLocation((desktopSize.width - jInternalFrameSize.width)/2,
    (desktopSize.height- jInternalFrameSize.height)/2);

I changed this according to my use like this -

Dimension desktopSize = this.getDesktopPane().getSize(); // Line No. 29
Dimension jInternalFrameSize = this.getSize();
this.setLocation((desktopSize.width - jInternalFrameSize.width)/2,
    (desktopSize.height- jInternalFrameSize.height)/2);

But my code is throwing NullPointerException -

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at newUserReg.(newUserReg.java:29) at smsMDI.mnuNewUserActionPerformed(smsMDI.java:278) at smsMDI.access$000(smsMDI.java:16) at smsMDI$2.actionPerformed(smsMDI.java:97) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.AbstractButton.doClick(AbstractButton.java:376) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877) at java.awt.Component.processMouseEvent(Component.java:6504) at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) at java.awt.Component.processEvent(Component.java:6269) at java.awt.Container.processEvent(Container.java:2229) at java.awt.Component.dispatchEventImpl(Component.java:4860) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Component.dispatchEvent(Component.java:4686) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) at java.awt.Container.dispatchEventImpl(Container.java:2273) at java.awt.Window.dispatchEventImpl(Window.java:2713) at java.awt.Component.dispatchEvent(Component.java:4686) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707) at java.awt.EventQueue.access$000(EventQueue.java:101) at java.awt.EventQueue$3.run(EventQueue.java:666) at java.awt.EventQueue$3.run(EventQueue.java:664) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) at java.awt.EventQueue$4.run(EventQueue.java:680) at java.awt.EventQueue$4.run(EventQueue.java:678) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:677) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

If any one can explain or show me the right way to do this, that will be a great help for me.

Community
  • 1
  • 1
Amit Roy
  • 33
  • 5

1 Answers1

1

Well you changed the code you found and added the getDesktopPane() method.

I would guess that you haven't added the internal frame to the desktop pane yet so that method is returning null.

Why did you change the code? You must have a reference to the desktop pane in order to add the internal frame to the desktop pane. So just use that reference.

I suggest you start with the working code found in the section from the Swing tutorial on How to Use Internal Frames. Just modify that code to center the frame as it is created. Then you can modify this working example to add the logic for your real application.

If that doesn't help then post a proper SSCCE that demonstrates the problem because we can't guess what you are really doing.

camickr
  • 321,443
  • 19
  • 166
  • 288
  • here in my code this represnt jInternalFrame, these 3 lines are written in jInternalFrame class. see - `public class newUserReg extends javax.swing.JInternalFrame { public newUserReg() { initComponents(); Color c=new Color(233, 255, 48); this.getContentPane().setBackground(c);` and then those 3 lines continued. jInternalFrame is added on jDesktopPane by Netbeans only – Amit Roy Mar 13 '16 at 02:52
  • @AmitRoy, those 3 lines mean nothing to me and are NOT a `SSCCE`. You have been given help on how to solve the problem. First make changes to the working code found in the tutorial code. Then apply the knowledge you learned from that code to fix your current code. – camickr Mar 13 '16 at 03:19