Читать «Java: руководство для начинающих» онлайн - страница 374

Герберт Шилдт

j f rm.add(j cbLoc); Приложение А. Ответы на вопросы для самопроверки 599. jfrm.add(jbtnComp); jfrm.add(jlabResult); // отобразить рамку окна j frm.setVisible(true); } // сравнить файлы после нажатия кнопки Compare public 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); else jlabResult.setText("Files are not the same."); } else jlabResult.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() { // создать новый контейнер 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(); } }) ; } }