Графические интерфейсы пользователя Java. Тимур Машнин
Чтение книги онлайн.

Читать онлайн книгу Графические интерфейсы пользователя Java - Тимур Машнин страница 19

СКАЧАТЬ записано снова, новое состояние не сохраняется.

      Существует два способа это исправить.

      Во-первых, вы можете каждый раз после вызова метода записи закрывать поток, а затем открывать его снова.

      Во-вторых, вы можете вызвать метод ObjectOutputStream.reset, который сигнализирует потоку о том, что необходимо освободить кэш от ссылок, которые он хранит, чтобы новые вызовы методов записи действительно записывали данные.

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

      Классы, требующие специальной обработки во время процесса сериализации и десериализации, должны определить эти методы с этими точными сигнатурами.

      Метод writeObject класса определяет сериализацию объекта.

      А метод readObject восстанавливает поток данных, который вы определили с помощью writeObject.

      Если же вы хотите полностью контролировать сериализацию объекта, используйте интерфейс Externalizable, например, при записи и чтении определенного формата файла.

      Для использования интерфейса Externalizable вам необходимо реализовать два метода: readExternal и writeExternal.

      Классы, которые реализуют Externalizable, должны иметь конструктор без аргументов.

      Класс XMLEncoder позволяет сериализовать объект в XML-файл.

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

      Вы также можете изменить данные в файле в текстовом редакторе.

      Соответственно с помощью класса XMLEncoder, можно легко восстановить потом объект из XML-файла.

      Библиотека Swing

      Графическая библиотека Swing была создана на основе библиотеки AWT для решения таких проблем AWT как недостаточный выбор графических компонентов и зависимость внешнего вида и поведения AWT графического интерфейса пользователя от конкретной операционной системы.

      Эти проблемы были решены созданием классов и интерфейсов библиотеки Swing с использованием одного только языка Java.

      Компоненты AWT являются тяжеловесными, в то время как компоненты Swing являются легковесными.

      Библиотека AWT использует нативный код (код, специфичный для конкретной операционной системы) для отображения компонентов.

      Каждая реализация среды выполнения Jave Runtime Environment должна обеспечивать собственные реализации кнопок, меток, панелей и всех других компонентов AWT.

      Всякий раз, когда используется компонент AWT, все запросы на рисование пересылаются нативному коду.

      Это позволяет использовать кнопку AWT в приложении, но кнопка отображается как кнопка Windows, или кнопка Mac или другая кнопка конкретной платформы, на которой работает приложение.

      Эти части нативного кода, к которым обращается среда выполнения JRE при использовании СКАЧАТЬ