- Установите макет вашего
JFrame
на BorderLayout
. Добавьте ваш JDesktopPane
в область CENTER
вашего JFrame:
JFrame f = new JFrame();
f.setBounds(50, 50, 500, 400);
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.setLayout(new BorderLayout());
JDesktopPane desktopPane = new JDesktopPane();
f.add(desktopPane, BorderLayout.CENTER);
f.setVisible(true);
Волшебство исходит от того, как BorderLayout
управляет расположением дочерних компонентов.Все, что будет добавлено в CENTER
область BorderLayout
, заполнит столько области, сколько он может получить из своего контейнера.
Если вы хотите увеличить JInternalFrame
внутри JDesktopPane
, вам следуетпозвоните setMaximum(true)
на него после того, как он будет добавлен к базовому JDesktopPane
:
public class JDesktop {
public static void main(String[] args) {
JFrame f = new JFrame();
f.setBounds(50, 50, 500, 400);
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.setLayout(new BorderLayout());
JInternalFrame internalFrame1 = new JInternalFrame("Internal Frame 1", true, true, true, true);
internalFrame1.setSize(150, 150);
internalFrame1.setVisible(true);
JDesktopPane desktopPane = new JDesktopPane();
desktopPane.add(internalFrame1);
try {
internalFrame1.setMaximum(true);
} catch (PropertyVetoException e) {
e.printStackTrace();
}
f.add(desktopPane, BorderLayout.CENTER);
f.setVisible(true);
}
}
Теперь, когда вы поняли, что неплохо знать о значениях по умолчанию.Менеджер по умолчанию для JFrame
- BorderLayout
, и когда вы добавляете что-либо к JFrame
без указания ограничения для области, он будет добавлен в область CENTER
.Таким образом, вы можете опустить эти строки в своем коде:
f.setLayout(new BorderLayout());
, и вы можете добавить desktopPane
просто используя эту строку:
f.add(desktopPane);