Чтение онлайн

на главную - закладки

Жанры

Java: руководство для начинающих
Шрифт:

Измените программу List Demo таким образом, чтобы она допускала выбор нескольких элементов из списка. // Демонстрация выбора нескольких элементов из списка // с помощью компонента Jlist. // Для компиляции этой программы требуется JDK 7 // или более поздняя версия данного комплекта. import javax.swing.; import javax.swing.event; import java.awt.; import java.awt.event.*; class ListDemo implements ListSelectionListener { JList jlst; JLabel jlab; JScrollPane jscrlp; // создать массив имен String names[] = { "Sherry", "Jon", "Rachel", "Sasha", "Josselyn", "Randy", "Tom", "Mary", "Ken", "Andrew", "Matt", "Todd" }; ListDemo { // создать новый контейнер JFrame JFrame jfrm = new JFrame("JList Demo"); // установить диспетчер компоновки FlowLayout j frm.setLayout(new FlowLayout); // задать исходные размеры рамки окна jfrm.setSize(200, 160); // завершить программу после закрытия окна j frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // создать компонент JList jlst = new JList(names); //

Удалив следующую строку кода, можно задать режим выбора // нескольких элементов из списка, поскольку этот режим // устанавливается для компонента JList по умолчанию. // jlst.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // добавить список на панели прокрутки, jscrlp = new JScrollPane(jlst); // задать предпочтительные размеры панели прокрутки jscrlp.setPreferredSize(new Dimension(120, 90)); Приложение А. Ответы на вопросы для самопроверки // создать метку для отображения результатов выбора из списка, jlab = new JLabel("Please choose a name"); // добавить обработчик событий, связанных с выбором из списка jlst.addListSelectionListener(this); // добавить список и метку на панели содержимого jfrm.add(jscrip); jfrm.add(jlab); // отобразить рамку окна j frm.setVisible(true); } // обработать события, связанные с выбором элементов из списка public void valueChanged(ListSelectionEvent le) { // получить индексы тех элементов, выбор которых был сделан // или отменен в списке int indices[] = j1st.getSelectedlndices; // отобразить результат выбора, если был выбран один // или несколько элементов из списка if(indices.length != 0) { String who = ""; // построить символьную строку из выбранных имен for(int i : indices) who += names[i] + " "; jlab.setText("Current selections: " + who); } else // иначе еще раз предложить сделать выбор jlab.setText("Please choose a name"); public static void main(String args[]) { // создать рамку окна в потоке диспетчеризации событий SwingUtilities.invokeLater(new Runnable { public void run { new ListDemo; } }) ; } }

Приложение Б Применение документирующих комментариев в Java

Как пояснялось в главе 1, в Java поддерживаются три вида комментариев. Первые два вида обозначаются символами //и/ /,а третий их вид называется документирующими комментариями. Такие комментарии начинаются символами /* и оканчиваются символами /. Документирующие комментарии позволяют включать сведения о программе в исходный код самой программы. Для извлечения этих сведений и последующего их преобразования в формат HTML-документа служит утилита j avadoc, входящая в состав JDK. Документирующие комментарии — удобный способ документирования прикладных программ. Вам, вероятно, уже встречалась документация, сформированная утилитой j avadoc, поскольку именно такой способ применяется для составления документации на библиотеку Java API. Дескрипторы javadoc

Утилита javadoc распознает и обрабатывает в документирующих комментариях следующие дескрипторы

Дескриптор Описание @author Обозначает автора программы {0code} Отображает данные шрифтом, предназначенным для вывода исходного кода, не выполняя преобразований в формат HTML-документа @deprecated Указывает на то, что элемент программы не рекомендован к применению {0docRoot} Указывает путь к корневому каталогу документации Gexception Обозначает исключение, генерируемое методом {@inheritDoc} Наследует комментарии от ближайшего суперкласса {@link} Вставляет ссылку на другую тему {@linkplain} Вставляет ссылку на другую тему, но ссылка отображается тем же шрифтом, что и простой текст {@literal} Отображает данные, не выполняя преобразований в формат HTML-документа @param Документирует параметр метода @return Документирует значение, возвращаемое методом @see Указывает ссылку на другую тему 0serial Документирует поле, упорядочиваемое по умолчанию QserialData Документирует данные, записываемые методом writeObject или writeExternal @serialField Документирует компонент ObjectStreamField 0since Обозначает версию, в которой были внесены определенные изменения @throws То же, что и дескриптор @exception {@value} Отображает значение константы, которая должна быть определена как поле типа static (Aversion Обозначает версию класса Дескрипторы, начинающиеся с символа @, называются автономными и помечают строку комментариев. А дескрипторы, заключенные в фигурные скобки, называются Приложение Б. Применение документирующих комментариев в Java 6Q5 встраиваемыми и могут быть использованы в других дескрипторах. В документирующих комментариях можно также использовать стандартные HTML-дескрипторы. Но некоторые HTML-дескрипторы, например дескрипторы заголовков, применять не следует, поскольку они могут испортить внешний вид HTML-документа, составляемого утилитой javadoc. Что касается документирования исходного кода, то документирующие комментарии можно использовать для описания классов, интерфейсов, полей, конструкторов и методов. Но в любом случае документирующие комментарии должны предшествовать непосредственно описываемому элементу исходного кода. Одни дескрипторы, в том числе @see, @since и @deprecated, могут быть использованы для документирования любых элементов исходного кода, а другие — только для документирования соответствующих элементов. Каждый дескриптор

документирующих комментариев рассматривается далее по отдельности. На заметку Документирующие комментарии можно также использовать для составления документации и краткого обзора разрабатываемого пакета, но делается это иначе, чем документирование исходного кода. Подробнее об этом можно узнать из документации на утилиту j avadoc. Дескриптор @author

Дескриптор @author описывает автора класса или интерфейса и имеет следующий синтаксис: @author описание где описание, как правило, обозначает имя автора. Для того чтобы сведения, указываемые в поле @author, были включены в результирующий HTML-документ, при вызове утилиты javadoc из командной строки следует указать параметр -author. Дескриптор {@code}

Дескриптор {@code} позволяет включать в комментарии текст, в том числе и отдельные фрагменты кода. Такой текст будет выводиться специальным шрифтом, используемым для форматирования кода, и не подлежит дальнейшей обработке по правилам форматирования HTML-документов. Этот дескриптор имеет следующий синтаксис: {0code фрагмент_кода} Дескриптор @deprecated

Дескриптор @deprecated указывает на то, что класс, интерфейс или метод не рекомендован к применению. В описание рекомендуется включать дескриптор 0see или {@link}, чтобы уведомить программиста о других возможных решениях. У этого дескриптора имеется следующий синтаксис: @deprecated описание где описание обозначает сообщение, описывающее причины, по которым данное языковое средство Java не рекомендуется к применению. Дескриптор @deprecated можно применять для документирования полей, методов, конструкторов, классов и интерфейсов. Дескриптор {@docRoot}

Дескриптор {@docRoot} указывает путь к корневому каталогу документации. Дескриптор @exception

Дескриптор ©exception описывает исключение, которое может возникнуть при выполнении метода. У него имеется следующий синтаксис: ©exception имяисключения пояснение где имяисключения обозначает полностью определенное имя исключения, а пояснение — символьную строку, в которой поясняется, при каких условиях исключение может возникнуть. Дескриптор ©exception можно применять только для документирования методов. Дескриптор {@inheritDoc}

Этот дескриптор наследует комментарии от ближайшего суперкласса. Дескриптор {@link}

Дескриптор {01ink} предоставляет встраиваемую ссылку на дополнительные сведения. У него имеется следующий синтаксис: {01ink пакет.класс#член текст} где пакет. класс#член обозначает имя класса или метода, на который делается встраиваемая ссылка, а текст — символьную строку, отображаемую в виде встраиваемой ссылки. Дескриптор {@linkplain}

Дескриптор {01inkplain} вставляет встраиваемую ссылку на другую тему. Эта ссылка отображается обычным шрифтом. А в остальном данный дескриптор подобен дескриптору {01 i n к}. Дескриптор {@literal}

Дескриптор {©literal} позволяет включать текст в комментарии. Этот текст отображается без дополнительной обработки по правилам форматирования HTML- документов. У него имеется следующий синтаксис: ©literal описание где описание обозначает текст, включаемый в комментарии. Дескриптор @param

Дескриптор @param описывает параметр. У него имеется следующий синтаксис: ©parameter имяпараметра пояснение где имяпараметра обозначает конкретное наименование параметра, а пояснение — поясняемое назначение параметра. Дескриптор ©param можно применять для документирования метода, конструктора, а также обобщенного класса или интерфейса. Дескриптор @return

Дескриптор @return описывает значение, возвращаемое методом. У него имеется следующий синтаксис: @return пояснение где пояснение обозначает тип и назначение возвращаемого значения. Дескриптор @ return применяется только для документирования методов. Дескриптор @see

Дескриптор @see предоставляет ссылку на дополнительные сведения. Ниже приведены две наиболее употребительные формы этого дескриптора. @see ссылка @see пакет.класс#член текст В первой форме ссылка обозначает абсолютный или относительный веб-адрес (URL). А во второй форме пакет. классфчлен обозначает имя элемента, тогда как текст — отображаемые сведения об этом элементе. Параметр текст указывать необязательно, а в его отсутствие отображается элемент, определяемый параметром пакет. класс#член. Имя члена также может быть опущено. Этот дескриптор дает возможность указать ссылку не только на метод или поле, но и на класс или интерфейс. Имя элемента может быть указано полностью или частично. Но если имени члена предшествует точка, она должна быть заменена знаком #. Дескриптор @serial

Дескриптор @serial определяет комментарии к полю, упорядочиваемому по умолчанию. У этого дескриптора имеется следующий синтаксис: @serial описание где описание обозначает комментарии к данному полю. Дескриптор @serialData

Дескриптор @serialData предназначен для документирования данных, которые были записаны с помощью методов writeObject и writeExternal . Синтаксис этого дескриптора приведен ниже. QserialData описание где описание обозначает комментарии к записанным данным. Дескриптор @serialField

Поделиться:
Популярные книги

Чехов. Книга 2

Гоблин (MeXXanik)
2. Адвокат Чехов
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Чехов. Книга 2

Сердце Дракона. Том 10

Клеванский Кирилл Сергеевич
10. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.14
рейтинг книги
Сердце Дракона. Том 10

Последний Паладин. Том 4

Саваровский Роман
4. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 4

Низший

Михайлов Дем Алексеевич
1. Низший!
Фантастика:
боевая фантастика
7.90
рейтинг книги
Низший

Разведчик. Заброшенный в 43-й

Корчевский Юрий Григорьевич
Героическая фантастика
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.93
рейтинг книги
Разведчик. Заброшенный в 43-й

Император

Рави Ивар
7. Прометей
Фантастика:
фэнтези
7.11
рейтинг книги
Император

Темный Лекарь

Токсик Саша
1. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь

Возвращение Безумного Бога 5

Тесленок Кирилл Геннадьевич
5. Возвращение Безумного Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Возвращение Безумного Бога 5

Рядовой. Назад в СССР. Книга 1

Гаусс Максим
1. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Рядовой. Назад в СССР. Книга 1

Его темная целительница

Крааш Кира
2. Любовь среди туманов
Фантастика:
фэнтези
5.75
рейтинг книги
Его темная целительница

Теневой Перевал

Осадчук Алексей Витальевич
8. Последняя жизнь
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Теневой Перевал

Возвышение Меркурия. Книга 16

Кронос Александр
16. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 16

Идеальный мир для Лекаря 18

Сапфир Олег
18. Лекарь
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 18

По дороге пряностей

Распопов Дмитрий Викторович
2. Венецианский купец
Фантастика:
фэнтези
героическая фантастика
альтернативная история
5.50
рейтинг книги
По дороге пряностей