|
|||
|
Примеры программирования на Java
import java.awt.*;
import java.applet.*;
import java.net.*;
import java.io.*;
import java.util.*;
public class netwc extends Applet {
/*
Класс netwc - потомок класса Applet
*/
TextField words;
TextField bytes;
TextField strings;
TextField url;
TextArea htmlText;
public void init () {
/*
В методе init () создаются метки ; кнопка 'Get' ; текстовые поля
TextField , в которых будет отображаться количество строк—, слов и
байт в ресурсе , который определяет URL ; поле для отображения самого
URL и поле для вывода содержимого ресурса ( объект класса TextArea).
Затем создаются менеджеры компоновки и служебные объекты класса Panel.
После чего созданные управляющие комппоненты "вставляются" в отведенные
для них места в панели panel и panel2.
*/
Label wordsL = new Label ("Words: ");
Label bytesL = new Label ("Bytes: ");
Label stringsL = new Label ("Strings: ");
Label urlL = new Label ("URL: ",Label.RIGHT);
Button getButton = new Button("Get");
words = new TextField ();
bytes = new TextField ();
strings = new TextField ();
url = new TextField ();
htmlText = new TextArea ();
url.setText("http://");
words.setEditable(false);
bytes.setEditable(false);
strings.setEditable(false);
htmlText.setEditable(false);
Panel panel = new Panel();
Panel panel2 = new Panel();
panel.setLayout(new GridLayout(2,3));
panel.add(bytesL);
panel.add(wordsL);
panel.add(stringsL);
panel.add(bytes);
panel.add(words);
panel.add(strings);
panel2.setLayout(new BorderLayout());
panel2.add("West",urlL);
panel2.add("Center",url);
panel2.add("East",getButton);
setLayout(new BorderLayout());
add("South",panel);
add("Center",htmlText);
add("North",panel2);
}
public boolean action(Event evtObj, Object arg) {
/*
Метод action(Event, Object) служит для обработки приложением событий
клавиатуры , мыши и т.д.
В данном случае определяется - была ли нажата кнопка "Get" , и если
была , то вызывается метод getHtml()
*/
if(evtObj.target instanceof Button) {
if(arg.equals("Get"))
getHtml();
return true;
}
return false;
}
void getHtml () {
/*
В методе getHtml() выполняется вся полезная работа апплета :
По введенному пользователем URL запрашивается ресурс ( например HTML
файл ), который помещается в переменную типа StringBuffer,
а затем при помощи объекта класса StringTokenizer строка из
StringBuffer делится на подстроки , отделенные пробелом , знаком
табуляции , новой строки или возвратом каретки . Получившееся
количество таких подстрок и является количеством слов в документе.
Для того, чтобы определить количество строк в документе, строка
делится на подстроки , разделенные символом новой строки и
возврата каретки.
Длина документа в байтах определяется при помощи метода getInputStream
класса URLConnection.
Если все прошло успешно , то вычисленные значения помещаются в
текстовые поля words , bytes , strings , а текст полученного документа
помещается в htmlText.
Примечание:
-----------
Как известно , в браузерах апплетам запрещен доступ по сети к другим
комппьютерам кроме того , с которого апплет был загружен
По-этому если вы запускаете апплет из браузера то имеете доступ
только к документам на сервере , с которого был получен апплет.
Если же вы используете appletviewer , входящий в JDK , то этот запрет
можно отключать и получать доступ к любым документам.
*/
URL u;
URLConnection uCon;
try {
u = new URL (url.getText());
uCon = u.openConnection();
}
catch (Exception e) {
words.setText("???");
bytes.setText("???");
strings.setText("???");
htmlText.setText("Can't get this page.");
return;
};
int length = uCon.getContentLength();
if (length?0) {
StringBuffer st = new StringBuffer(length);
try {
InputStream input = uCon.getInputStream();
int i = length;
int c;
while (((c = input.read()) != -1) ?? (--i ? 0)) {
st.append((char)c);
}
input.close();
} catch (Exception e)
{};
bytes.setText(Integer.toString(length));
htmlText.setText(st.toString());
StringTokenizer stoken = new StringTokenizer (st.toString(),"\n");
strings.setText(Integer.toString(stoken.countTokens()));
stoken = new StringTokenizer (st.toString());
words.setText(Integer.toString(stoken.countTokens()));
}
else {
words.setText("???");
bytes.setText("???");
strings.setText("???");
htmlText.setText("Can't get this page.");
}
}
}
Sun Microsystems |
||