Как поместить текстовую область (JTextArea) в окно (JFrame)?

У меня есть рабочий код, который создает окно с текстовой областью. Код находится здесь. Я пытаюсь понять, как работает этот код. многое понятно:

  1. Основной метод создает экземпляр класса TextAreaDeom (который является подклассом JFrame). Другими словами, метод main создает окно.
  2. В основном методе мы устанавливаем некоторые «параметры» окна и делаем его видимым.

Мне непонятно, в каком месте мы ставим текстовую область в окне. Я вижу, что текстовая область создается прямо перед конструктором. Так же вижу, что в конструкторе мы задаем какие-то "параметры" текстовой области (setText). Я также вижу, что в конструкторе мы создаем область прокрутки и задаем для нее некоторые параметры. Я вижу, что область прокрутки «подключена» к текстовой области (поскольку мы используем экземпляр текстовой области для создания области прокрутки). Я также вижу, что мы создаем объект под названием «контент» (используя текущее окно) и «добавляем» область прокрутки к «контенту».

Но в каком месте в окно добавляется текстовая область? Можно ли сказать, что текстовая область добавляется к области прокрутки, а область прокрутки добавляется к «содержимому», а содержимое является частью объекта-окна?


person Community    schedule 31.01.2010    source источник


Ответы (3)


в строке 16 вы создаете JScrollPane, который обертывает ваш объект JTextArea. В строке 21 вы добавляете этот JScrollPane, который содержит ваш TextArea, в ContentPane JFrame. Когда вы вызываете getContentPane() вместо создания нового, ContentPane уже является частью JFrame.
Все элементы ContentPane будут отображаться как часть JFrame. Метод add JFrame предназначен только для удобства и перенаправляет вызов в JFrames ContentPane.

person Community    schedule 31.01.2010

Область прокрутки scrollingArea создается с текстовой областью внутри. scrollPane, был создан с текстовой областью m_resultArea (см. документацию для JScrollPane в конструктор). затем добавляется на панель содержимого фрейма.

person Community    schedule 31.01.2010

Элементы GUI должны быть созданы на основе EDT. Вот более надежный main() метод для программы, процитированной выше.

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        @Override
        public void run() {
            JFrame win = new TextAreaDemo();
            win.setTitle("TextAreaDemo");
            win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            win.pack();
            win.setVisible(true);
        }
    });
}
person Community    schedule 31.01.2010