Java GUI: о методе и содержании getContentPane()
В этом фрагменте кода:
JLabel emptyLabel = new JLabel("");
emptyLabel.setPreferredSize(new Dimension(175, 100));
frame.getContentPane().add(emptyLabel, BorderLayout.CENTER);
Я вижу, что он создает новую метку и добавляет ее в объект JFrame
frame
.
Но я хочу понять, что делает getContentPane()
, и зачем мне это нужно?
Я читал этот API, но я все еще не понял.
Ответы
Ответ 1
Каждый JPanel является контейнером, поэтому либо добавляется в панель, а затем добавляется в контейнер или напрямую использует add(component)
или использует метод getContentPane().add
, и добавляет компонент в контейнер в java 7
(я не знаю версию 6 есть проблема с этим или нет).
Ответ 2
Каждый контейнер верхнего уровня Swing (и JInternalFrame) имеет то, что называется JRootPane
. Это отвечает за управление общим расположением окна.
![enter image description here]()
Корневая панель имеет несколько уровней, одна из которых - панель содержимого. Когда вы добавляете что-то в фрейм (так как Java 5, я думаю), он автоматически добавляется в панель содержимого для вас, перед этим вам нужно было позвонить getContentPane().add(...)
самостоятельно
Взгляните на Как использовать RootPanes
Ответ 3
В контейнере имеется несколько слоев. Вы можете представить слой как прозрачную пленку, которая накладывается на контейнер. В Java Swing слой, который используется для хранения объектов, называется панелью . Объекты добавляются на уровень панели содержимого контейнера .
Метод getContentPane() извлекает слой панели контента, чтобы вы могли добавить к нему объект. Панель содержимого - это объект, созданный средой Java. Вам не обязательно знать имя области содержимого, чтобы использовать его. Когда вы используете getContentPane()
, объект панели содержимого затем подставляется туда, чтобы вы могли применить к нему метод.
Ответ 4
A JFrame - это головной компонент, который объединяется с другими подкомпонентами. С getContentPane() получает компонент, представляющий содержимое графического интерфейса пользователя. Например, JMenuBar помещается в другую область рядом с contentPane кадра.