如何中心JInternalFrame?

问题描述 投票:-1回答:1

使用Java 1.8。

我用JInternalFrame。这里我设置内部框架WelcomeInternalFrame.java的大小。

public class WelcomeInternalFrame extends JInternalFrame implements ActionListener {
    private void addInternalFrame(JInternalFrame internalFrame, Boolean isMaximize, Dimension dimension) {
        desktop.add(internalFrame);
        try {
            internalFrame.setSelected(true);
            if (isMaximize != null && isMaximize) {
                internalFrame.setMaximum(true);
            } else {
                internalFrame.setSize(dimension);
            }
        } catch (java.beans.PropertyVetoException e) {
            logger.error(e.getMessage(), e);
        }
    }
}

在我的internalFrame中,我使用GridBagConstraints。我的internalFrame的父级是JFrame

这里是父MainScreenView.java的代码:

public class MainScreenView extends JFrame implements ActionListener {
    private JDesktopPane desktop;
    private void buildContent() {
            currentInternalFrame = new AccountsScroller(this);
            addInternalFrame(currentInternalFrame, true, null);
            setContentPane(desktop);

            desktop.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);

            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            pack();
            setLocationRelativeTo(null); // center
            setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH);
            setVisible(true);
        }
}

此代码最大化内部框架,或设置特定大小。好。

但我还需要将内部框架集中在一起。我怎么能这样做?

java swing jinternalframe
1个回答
0
投票

此问题非常依赖于您使用的LayoutManager。如果您不使用任何LayoutManager,这适用:

private void addInternalFrame(JInternalFrame internalFrame, Boolean isMaximize, Dimension dimension) {
   try {
       internalFrame.setSelected(true);
       if (isMaximize != null && isMaximize) {
           internalFrame.setMaximum(true);
       } else {
           internalFrame.setSize(dimension);
       }
   } catch (java.beans.PropertyVetoException e) {                      
         logger.error(e.getMessage(), e);
   }

    internalFrame.setLocation(desktop.getWidth()/2 - internalFrame.getWidth()/2,
        desktop.getHeight()/2 - internalFrame.getHeight()/2);
    desktop.add(internalFrame);
    internalFrame.setVisible(true);
 }

从你的其他问题讲述,我假设desktop类型为JDesktopPane。但它适用于任何来自java.awt.Container的东西

© www.soinside.com 2019 - 2024. All rights reserved.