#java #swing #user-interface #jframe
#java #swing #пользовательский интерфейс #jframe
Вопрос:
Означает ли getContentPane().add() то же самое, что add()?
public class TestFrame extends JFrame{
public TestFrame() {
JLabel label = new JLabel("jo");
getContentPane().add(label);
add(label);
}
}
Комментарии:
1. JFrame API ответит на этот вопрос быстрее, чем задавать его здесь. 🙂
2. Привет, я сначала попробовал с API, но там не было подсказки.
3. @user268755 если вы находитесь в eclipse, нажмите add() и нажмите shift f2, затем проделайте то же самое с getContentPane().add() в части add() — вы окажетесь в той же точке документа API, где показано, что это один и тот же точный вызов.
4. Действительно, я это сделал, но вы не знаете, возвращает ли JFrame getContentPane () другие объекты, поэтому я спросил об этом здесь.
Ответ №1:
Означает ли getContentPane().add() то же самое, что add()?
Да, начиная с 1.5 .
Комментарии:
1. где ссылка на API для этого?
2. @user268755: Проверьте преамбулу на наличие версии JFrame 1.4 в отличие от версии JFrame 1.5 . Воспользуйтесь Google-fu, чтобы найти примечания к выпуску 1.5, которые поддерживают это изменение.
3. спасибо, я всегда использовал локальный javadoc версии 1.6, спасибо за подсказку 1.4.
4. Здесь также есть полезное примечание .
Ответ №2:
В основном. Чтобы сделать все «проще», addImpl
было изменено на пересылку в область содержимого, но в редких угловых случаях это не так (например, панель содержимого должна быть каким-то образом добавлена).
Этот метод переопределяется для условной пересылки вызовов в ContentPane.
Ответ №3:
Да, потому что, если вы заметили, они оба из
Class Container
java.lang.Object
java.awt.Component
java.awt.Container
add()
JLabel расширяет контейнер, а getContentPane() возвращает контейнер.