How do I open a JInternalFrame centered in a JDesktopPane?

后端 未结 5 1625
礼貌的吻别
礼貌的吻别 2021-01-05 09:21

I am adding a bunch of JInternalFrames into a JDesktopPane, as the user selects to open various features through the menus. But I would like the in

相关标签:
5条回答
  • 2021-01-05 09:48

    For reference, here is the solution I used, based on dogbane's advice:

    Dimension desktopSize = desktopPane.getSize();
    Dimension jInternalFrameSize = jInternalFrame.getSize();
    jInternalFrame.setLocation((desktopSize.width - jInternalFrameSize.width)/2,
        (desktopSize.height- jInternalFrameSize.height)/2);
    
    0 讨论(0)
  • 2021-01-05 09:53

    Add this void

    public void addCentered(Component jif) {        
        desktopPane.add(jif);
        jif.setLocation((desktopPane.getWidth()-jif.getWidth())/2, (desktopPane.getHeight()-jif.getHeight())/2);
        jif.setVisible(true);
    }
    

    and when adding the jInternalFrame call:

    addCentered(jifName);
    
    0 讨论(0)
  • 2021-01-05 09:56

    If you are using Netbeans (which is recommended for desktop apps) you just need to:

    1. Select the form, right click and then properties;
    2. Go to code tab;
    3. Change "Form size policy" from "Generate Pack()" to "Generate Resize Code";
    4. Form Position (option above Form size policy) will be available.

    Now you can set the for position as you wish :)

    0 讨论(0)
  • 2021-01-05 09:56

    I would suggest the Window.setLocationRelativeTo(Component) method, which will center the window relative to a specified component. Instead of passing in a JDesktopPane, you might want to obtain the parent frame for a component, since otherwise, your JInternalFrame will be centered according to whichever component you pass in.

    Here is a code sample:

    private void showDialog(Dialog dialogToCenter, Component button) {
        Frame frame = JOptionPane.getFrameForComponent(button);
        dialogToCenter.setLocationRelativeTo(frame);
        dialogToCenter.setVisible(true);
    }
    
    0 讨论(0)
  • 2021-01-05 10:02

    Work out the top-left corner of the new location (based on the size of the JDesktopPane and JInternalFrame) and then call JInternalFrame.setLocation.

    0 讨论(0)
提交回复
热议问题