使用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);
}
}
此代码最大化内部框架,或设置特定大小。好。
但我还需要将内部框架集中在一起。我怎么能这样做?
此问题非常依赖于您使用的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
的东西