Изменить стиль страницы

Добавьте в утилиту сравнения файлов, созданную в примере для опробования 15.1,флажок со следующей пояснительной надписью: Show position of mismatch (Показывать место несовпадения). Если этот флажок установлен, программа должна отображать место, в котором обнаружено первое расхождение в содержимом сравниваемых файлов./Пример для опробования 15-1.Утилита сравнения файлов, создаваемая на основе Swing.В этой версии присутствует флажок для установки режима показаместа первого несовпадения содержимого сравниваемых файлов.Для компиляции этой утилиты требуется JDK 7или более поздняя версия данного комплекта./import java.awt.;import java.awt.event.;import javax.swing.;import java.io.;class SwingFC implements ActionListener {JTextField jtfFirst; // Переменная для хранения имени первого файлаJTextField jtfSecond; // Переменная для хранения имени второго файлаJButton jbtnComp; // Кнопка для сравнения файловJLabel jlabFirst, jlabSecond; // Подсказки для пользователяJLabel jlabResult; // Сведения о результатах и сообщения об ошибкахJCheckBox jcbLoc; // флажок для показа места первого несовпаденияфайловSwingFC () {// создать новый контейнер JFrameJFrame jfrm = new JFrame("Compare Files");// установить диспетчер компоновки FlowLayoutj frm.setLayout(new FlowLayout());// задать исходные размеры рамки окнаjfrm.setSize(200, 190);// завершить программу после закрытия окнаj frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// создать поля для ввода имен файловjtfFirst = new JTextField(14);jtfSecond = new JTextField(14);// установить команды действия для полей ввода текстаjtfFirst.setActionCommand("fileA");jtfSecond.setActionCommand("fileB");// создать кнопку CompareJButton jbtnComp = new JButton("Compare");// добавить приемник событий действия от кнопки ComparejbtnComp.addActionListener(this) ;// создать меткиjlabFirst = new JLabel("First file: ");jlabSecond = new JLabel("Second file: ");jlabResult = new JLabel("");// создать флажокjcbLoc = new JCheckBox("Show position of mismatch");// добавить компоненты на панели содержимогоjfrm.add(jlabFirst);jfrm.add(jtfFirst) ;jfrm.add(jlabSecond) ;jfrm.add(jtfSecond);

j f rm.add(j cbLoc);Приложение А. Ответы на вопросы для самопроверки 599.jfrm.add(jbtnComp);jfrm.add(jlabResult);// отобразить рамку окнаj frm.setVisible(true);}// сравнить файлы после нажатия кнопки Comparepublic void actionPerformed(ActionEvent ae) {int i=0, j=0;// сначала убедиться, что введены имена обоих файловif(jtfFirst.getText().equals("")) {jlabResult.setText("First file name missing.");return;.}if(jtfSecond.getText().equals("")) {jlabResult.setText("Second file name missing.");return;// сравнить файлы, используя оператор try с ресурсамиtry (FilelnputStream fl = new FilelnputStream(jtfFirst.getText());FilelnputStream f2 = new FilelnputStream(jtfSecond.getText()))// проверить содержимое каждого файлаdo {i = f1.read();j = f2.read();if(i != j) break;} whiled != -1 && j != -1) ;if(i != j) (if(jcbLoc.isSelected())jlabResult.setText("Files differ at location " + count);elsejlabResult.setText("Files are not the same.");}elsejlabResult.setText("Files compare equal.");} catch(IOException exc) {jlabResult.setText("File Error");}}public static void main(String args[]) {// создать рамку окна в потоке диспетчеризации событийSwingUtilities.invokeLater(new Runnable() {public void run() {new SwingFC();}});}}

Измените программу 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() {// создать новый контейнер JFrameJFrame jfrm = new JFrame("JList Demo");// установить диспетчер компоновки FlowLayoutj frm.setLayout(new FlowLayout());// задать исходные размеры рамки окнаjfrm.setSize(200, 160);// завершить программу после закрытия окнаj frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// создать компонент JListjlst = 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Документирует компонент ObjectStreamField0sinceОбозначает версию, в которой были внесены определенные изменения@throwsТо же, что и дескриптор @exception{@value}Отображает значение константы, которая должна быть определена как полетипа static(AversionОбозначает версию классаДескрипторы, начинающиеся с символа @, называются автономными и помечаютстроку комментариев. А дескрипторы, заключенные в фигурные скобки, называютсяПриложение Б. Применение документирующих комментариев в Java 6Q5встраиваемыми и могут быть использованы в других дескрипторах. В документирующихкомментариях можно также использовать стандартные HTML-дескрипторы. Но некоторые HTML-дескрипторы, например дескрипторы заголовков, применять не следует, поскольку они могут испортить внешний вид HTML-документа, составляемого утилитойjavadoc.Что касается документирования исходного кода, то документирующие комментарииможно использовать для описания классов, интерфейсов, полей, конструкторов и методов. Но в любом случае документирующие комментарии должны предшествовать непосредственно описываемому элементу исходного кода. Одни дескрипторы, в том числе@see, @since и @deprecated, могут быть использованы для документирования любыхэлементов исходного кода, а другие — только для документирования соответствующихэлементов. Каждый дескриптор документирующих комментариев рассматривается далеепо отдельности.На заметкуДокументирующие комментарии можно также использовать для составления документациии краткого обзора разрабатываемого пакета, но делается это иначе, чем документирование исходного кода. Подробнее об этом можно узнать из документации на утилиту j avadoc.Дескриптор @author