Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpory_java_2_semtcnh.doc
Скачиваний:
2
Добавлен:
22.09.2019
Размер:
425.98 Кб
Скачать

Gui общее понятия, принципы реализации в Java.*

GUI(graphic user interface)–часть программы которая взаимодействует с пользователем.

• Окна(Window)

• Меню(Menu)

• Кнопки(Button)

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

Каждый компонент графического интерфейса имеет так называемый свой UI-представитель, который определяет вид данной компоненты в интерфейсе. Вид компонента классом UIManager, который использует 3 стандартных интерфейса: MetaltJava, Windows,Motif

Swing входит в состав набора библиотек Java Foudation Classes (JFC):

--Swing содержит компоненты для создания пользовательского интерфейса,

--Java2D-библиотека, позволяющая применять в приложении двухмерную графику,

--Accessibility-набор классов и интерфейсов, наделяющих приложения средствами поддержки пользователей с ограниченными возможностями

--Drag’n’Drop-дополнение, позволяющее приложению взаимодействовать с приложениями операционной системы пользователя или другими Java приложениями с помощью технологии перетаскивания (drag and drop)

Графический пользовательский интерфейс(GUI) относится к системам, управляемым событиями(event driven systems)

При наступлении события программа выполняет необходимы действия, а затем снова переходит к ожиданию.

while(readedByte!=-1){

outFile.write(readedByte);

readedByte = sequenceStream.read(); } }// try end

catch (IOException e) {

System.out.println("IOException: " +

e.getMessage());}

try {sequenceStream.close();}

catch(IOException e) { };

try{outFile.close();}

catch(IOException e){};

} // finally end

Для данного класса имеется конструктор для произвольного количества входных потоков, в нем используется абстрактное представление интерфейса Enumeration, который позволяет получить упорядоченный список объектов любого типа ( только InputStream в данном случае)

Интерфейс Enumeration (методы hasMoreElements, nextElement) реализуют большинство классов-коллекций,Например класс Vector, ArrayList,LinkedList и др.

Классы FilterInputStreeam и FilterOutputStream

Фильтрующие потоки (Filtered) представляют собой абстрактные классы байтовых потоков, в которых с читаемыми байтами выполняются некоторые операции-фильтры. (Адаптеры, надстройки, обертки, декораторы и т.д.)

Объект подклассов FilterInputStream получает данные от другого объекта InputStream (аргумент соответствующего конструктора), некоторым образом обрабатывает(фильтрует) байты и возвращает результат.

Фильтрующие потоки могут объединяться в последовательности, при этом несколько фильтров превращаются в один сквозной фильтр.

Аналогично осуществляется фильтрация вывода

Классы BufferedInputStream и BufferedOutputStream

Буферизация ввода и вывода.

Буфер – это вспомгательная область оперативной памяти, которая автоматически выделяется системой ввода/вывода Java машины при осуществлении операций ввода/ вывода с дисковой памяти. При выводе write данные сначала помещаются в буфер и когда буфер заполняется данными, весь буфер выталкивается на диск. При чтении данные также помещаются в буфер, причем данная операция может быть выполнена до метода read(), после этого read() считывает информацию с буфера. Инициировать передачу содержимого буфера на устройство вывода можно и явным образом, вызвав метод flush(). Также буфер освобождается перед закрытием потока.

Для буферизации данных служат классы BufferedInputStream и BufferedOutputStream.

BufferedInputStream содержит массив байт, который служит буфером для считываемых данных.

Класс BufferedInputStream добавляет поддержку методов mark() и reset(). Метод mark() запоминает точку во входном потоке вызов метода reset() приводит к тому, что все байты, полученные после последнего вызова mark(), будут считываться повторно, прежде, чем новые байты начнут поступать из входного потока

BufferedOutputStream предоставляет возможность производить многократную запись небольших блоков данных без обращения к устройству вывода при записи каждого из них.

Сначала данные записываются во внутренний буфер. Непосредственное обращение к устройству вывода и, соответственно, запись в него, произойдет, когда буфер заполнится.

Инициировать передачу содержимого буфера на устройство вывода можно и явным образом, вызвав метод flush().

Так же буфер освобождается перед закрытием потока

ByteArrayInputStream & ByteArrayOutputStream

Представляет потоки, считывающие и записывающие данные из/в массив байт.

--класс ByteArrayOutputStream использует внутри себя объект byte[], куда записывает данные, передаваемые при вызове методов write().

Чтобы получить записанные в массив данные, вызывается метод

toByteArray().

--ByteArrayOutputStream out = new ByteArrayOutputStream();

out.write(10);

out.write(11);

byte[] bytes = out.toByteArray();

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

Например, при отладке и тестировании сложных процессов записи и чтения из потоков, те можно просмотреть результат не создавая ни файл, ни сетевое соединение и тд

Форматирование данных при выводе

Форматирование вывода с помощью класса Formatter

Базовой частью поддержки создания форматированного вывода в языке Java служит класс Formatter, включенный в пакет java.util. Он обеспечивает преобразования формата (format conversions) позволяющие выводить числа, строки и время и даты практически в любом понравившемся вам формате. Класс функционирует подобно функции printf () языков C/C++, а значит, если Вы знакомы с этими языками, научиться использовать класс Formatter будет очень легко. Кроме того, это позволит в будущем упростить преобразование кода на языках C/C++ в исходный код на языке Java. Если Вы не знаете языков C/C++, все равно очень легко освоить форматирование данных. Кроме класса Formatter в Java 2 версии 5.0 добавлен метод printf () для классов printstream и printwriter. Метод printf () автоматически использует класс Formatter и предлагает функциональные средства почти один к одному совпадающие с возможностями функции printf () языков C/C++, таким образом, облегчая в дальнейшем преобразование кода на C/C++ в код на языке Java. Конструкторы класса Formatter

Formatter() Formatter(Appendable buf) Formatter(Appendable buf, Locale loc) Formatter(String filename) throws FileNotFoundException Formatter(String filename, String charset) throws FileNotFoundException, unsupportedEncodingException Formatter(File outF) throws FileNotFoundException Formatter(OutStream outStrm)

В приведенных образцах buf задает буфер для форматированного вывода. Если параметр buf равен null, класс Formatter автоматически размещает объект типа StringBuilder для хранения форматированного вывода. Параметр loc определяет региональные и языковые настройки. Если никаких настроек не задано, используются настройки по умолчанию. Параметр filename задаст имя файла, который получит форматированный вывод. Параметр charset определяет кодировку. Если она не задана, используется кодировка, установленная по умолчанию. Параметр outF передаст ссылку на открытый файл, в котором будет храниться форматированный вывод. В параметре outStrm передается ссылка на поток вывода, который будет получать отформатированные данные. Если используется файл, выходные данные также записываются в файл. Возможно, наиболее широко используемый конструктор, первый в приведенном перечне, — это конструктор без параметров. Он использует региональные настройки, принятые по умолчанию, и автоматически размещает объект класса StringBuilder для хранения форматированного вывода

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]