JAVA GUI: о методе и содержимом getContentPane()

в этом фрагменте кода:

JLabel emptyLabel = new JLabel("");
emptyLabel.setPreferredSize(new Dimension(175, 100));
frame.getContentPane().add(emptyLabel, BorderLayout.CENTER);

Я вижу, что он делает новый ярлык и добавляет его в JFrame объект frame. Но я хочу понять, что значит getContentPane() do, и зачем мне это нужно?

я прочитала этот API

4 ответов


JPanel является контейнером, поэтому добавьте его в панель, а затем добавьте его в контейнер или напрямую используйте add(component) или использовать getContentPane().add метод. Как добавить компонент в контейнер в Java 7 (Я не знаю, есть ли у версии 6 проблема с этим или нет).

каждый контейнер верхнего уровня качания (и JInternalFrame) имеет то, что называется JRootPane. Это отвечает за фактическое управление общей компоновкой окна.

enter image description here

панель корень имеет несколько слоев, одним из которых является панель содержимого. Когда вы добавляете что-то в фрейм (начиная с Java 5, я думаю), он автоматически добавляется в панель содержимого для вас, до этого вам нужно было вызвать getContentPane().add(...) сами

посмотри как использовать RootPanes


на контейнер есть несколько слоев в нем. Вы можете думать о слое как о прозрачной пленке, которая накладывает контейнер. В Java Swing слой, используемый для хранения объектов, называется панели содержимого. Объекты добавляются в слой панели содержимого контейнер.

на getContentPane () метод возвращает панели содержимого слоя чтобы вы могли добавить к нему объект. Область контента является объектом, созданным среда выполнения Java. Для его использования не обязательно знать имя панели содержимого. Когда вы используете getContentPane(), объект панели содержимого затем подставляется там, чтобы вы могли применить к нему метод.


JFrame-это headcomponent, который соединяется с другими подкомпонентами. С помощью getContentPane () получает компонент, представляющий содержимое графического пользовательского интерфейса. Например, JMenuBar помещается в другую область рядом с contentPane кадра.