
Примеры
Пример 1.
import java.io.*;
class CountBytes {
public static void main(String[] args) throws IOException {
InputStream in;
if (args.length == 0)
in = System.in;
else
in = new FileInputStream(args[0]);
int total = 0;
while (in.read() != -1)
total++;
System.out.println(total + " байтов");
}
}
Пример 2.
Import java.Io.*;
class CountSpace {
public static void main(String[] args) throws IOException {
Reader in;
if (args.length == 0)
in =new InputStreamReader(System.in);
else
in = new FileReader(args[0]);
int ch;
Int total;
int spaces = 0;
for (total = 0; (ch = in.read()) != -1; total++) {
if (Character.isWhitespace((char) ch))
spaces++;
}
System.out.println(total + " символов, " + spaces + " пробелов ");
}
}
Пример 3.
static double sumStream(Reader in) throws IOException {
StreamTokenizer nums = new StreamTokenizer(in);
double result = 0.0;
while (nums.nextToken() != StreamTokenizer.TT_EOF) {
if (nums.ttype == StreamTokenizer.TT_NUMBER)
result += nums.nval;
}
return result;
}
Пример 4.
public static void writeData(double[] data, String file) throws IOException { OutputStream fout = new FileOutputStream(file);
DataOutputStream out = new DataOutputStream(fout);
out.writeInt(data.length);
for (int i =0; i < data.length; i++)
out.writeDouble(data[i]);
out.close();
}
public static double[] readData(String file) throws IOException { InputStream fin = new FileInputStream(file);
DataInputStream in = new DataInputStream(fin);
double[] data = new double[in.readInt()];
for (int i =0; i < data.length; i++)
data[i] = in.readDouble();
in.close();
return data;
Пример 5.
// Сериализация
LinkedList ls = new LinkedList();
FileOutputStream fileOut = new FileOutputStream("list");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(ls);
// Десериализация
FileInputStream fileIn = new FileInputStream("list");
ObjectInputStream in = new ObjectInputStream(fileIn);
LinkedList ls = (LinkedList) in.readObject();
Рисунок 1
Рисунок 2
Пример 6.
curentValue = 5;
for(;;){
display.showValue(currentValue);
Thread.sleep(1000);
}
Пример 7.
public class Keeper {
private Object data;
private boolean newed = false;
synchronized public void putData(Object obj) throws InterruptedException {
while(newed)
wait();
data = obj;
newed = true;
notifyAll();
}
synchronized public Object getData() {
try {
while(!newed)
wait();
newed = false;
notifyAll();
return data;
} catch(InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
Рисунок 3. Singleton: Структура
Рисунок 4. Factory Method: мотивация
Рисунок 5. Factory Method: структура
Рисунок 6. Adapter (класса): структура
Рисунок 7. Adapter (объекта): структура
Рисунок 8. Decorator: мотивация
Рисунок 9. Decorator: структура
Рисунок 10. Proxy: мотивация
Рисунок 11. Proxy: структура
Рисунок 12. Proxy: Диаграмма объектов
Рисунок 13. Iterator: мотивация
Рисунок 14. Iterator: мотивация
Рисунок 15. Iterator: структура
Рисунок 16. Observer: структура
Рисунок 17. Observer: отношения
Рисунок 18. Model-View-Controller
Пример 8.
import java.awt.*;
import java.applet.*;
/*
<applet code="HelloWorldApplet" width=200 height=40>
</applet>
*/
public class HelloWorldApplet extends Applet {
public void paint(Graphics g) {
g.drawString("Hello World!", 20, 20);
}
}
Пример 9.
<APPLET
CODE = appletFile
OBJECT = appletSerialFile
WIDTH = pixels
HEIGHT = pixels
[ARCHIVE = jarFiles]
[CODEBASE = codebaseURL]
[ALT = alternateText]
[NAME = appletInstanceName]
[ALIGN = alignment]
[VSPACE = pixels]
[HSPACE = pixels]
>
[< PARAM NAME = AttributeNamel VALUE = AttributeValuel >]
[< PARAM NAME = AttributeName2 VALUE = AttributeValue2 >]
[HTML-текст, отображаемый при отсутствии поддержки Java]
</APPLET>
Пример 10.
HTML-код
<applet code=Testing width=40 height=40>
<param name=fontName value=Univers>
<param name=fontSize value=14>
<param name=leading value=2>
<param name=accountEnabled value=true>
</applet>
Код в апплете
String fontName = getParameter("fontName");
int fontSize = Integer.parseInt(getParameter("fontSize"));
Float leading = Float.valueOf(getParameter("leading"));
Boolean paidUp = Boolean.valueOf(getParameter("accountEnabled"));
Рисунок 19. Иерархия классов
Рисунок 20. Canvas
Пример 11.
/* <applet code = "CanvasDemo" width=300 height=300>
</applet> */
import java.awt.*;
import java.applet.*;
class GrayCanvas extends Canvas {
Color gray;
public GrayCanvas(float g) {
gray = new Color(g, g, g);
}
public void paint(Graphics g) {
Dimension size = getSize();
g.setColor(gray);
g.fillRect(0, 0, size.width, size.height);
g.setColor(Color.black);
g.drawRect(0, 0, size.width-1, size.height-1);
}
}
public class CanvasDemo extends Applet {
static final int n = 4;
public void init() {
setLayout(null);
int width = Integer.parseInt(getParameter("width"));
int height = Integer.parseInt(getParameter("height"));
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
float g = (i * n + j) / (float) (n * n);
Canvas c = new GrayCanvas(g);
add(c);
c.setSize(width / n, height / n);
c.setLocation(i * width / n, j * height / n);
}
}
}
}
Рисунок 21. Label
Пример 12.
/* <applet code = "LabelDemo" width=300 height=300> </applet> */
import java.awt.*;
import java.applet.*;
public class LabelDemo extends Applet {
public void init() {
setLayout(null);
int width = Integer.parseInt(getParameter("width"));
int height = Integer.parseInt(getParameter("height"));
Label left = new Label("Left", Label.LEFT);
Label right = new Label("Right", Label.RIGHT);
Label center = new Label("Center", Label.CENTER);
add(left);
add(right);
add(center);
left.setBounds(0, 0, width, height / 3);
right.setBounds(0, height / 3, width, height / 3);
center.setBounds(0, 2 * height / 3, width, height / 3);
}
}
Рисунок 22. Button
Пример 13.
/* <applet code = "ButtonDemo" width=300 height=300> </applet> */
import java.awt.*;
import java.applet.*;
public class ButtonDemo extends Applet {
public void init() {
setLayout(null);
int width = Integer.parseInt(getParameter("width"));
int height = Integer.parseInt(getParameter("height"));
Button yes = new Button("Yes");
Button no = new Button("No");
Button maybe = new Button("Undecided");
add(yes);
add(no);
add(maybe);
yes.setBounds(0, 0, width, height / 3);
no.setBounds(0, height / 3, width, height / 3);
maybe.setBounds(0, 2 * height / 3, width, height / 3);
}
}
Рисунок 23. Checkbox
Пример 14.
/* <applet code = "CheckboxDemo" width=320 height=300> </applet> */
import java.awt.*;
import java.applet.*;
public class CheckboxDemo extends Applet {
public void init() {
setLayout(null);
int width = Integer.parseInt(getParameter("width"));
int height = Integer.parseInt(getParameter("height"));
Checkbox win95 = new Checkbox("Windows 95/98", null, true);
Checkbox solaris = new Checkbox("Solaris 2.5");
Checkbox mac = new Checkbox("MacOS 7.5");
add(win95);
add(solaris);
add(mac);
win95.setBounds(0, 0, width, height / 3);
solaris.setBounds(0, height / 3, width, height / 3);
mac.setBounds(0, 2 * height / 3, width, height / 3);
}
}
Рисунок 24. CheckboxGroup
Пример 15.
/* <applet code = "CheckboxGroupDemo" width=300 height=300> </applet> */
import java.awt.*;
import java.applet.*;
public class CheckboxGroupDemo extends Applet {
public void init() {
setLayout(null);
int width = Integer.parseInt(getParameter("width"));
int height = Integer.parseInt(getParameter("height"));
CheckboxGroup g = new CheckboxGroup();
Checkbox win95 = new Checkbox("Windows 95/98", g, true);
Checkbox solaris = new Checkbox("Solaris 2.5", g, false);
Checkbox mac = new Checkbox("MacOS 7.5", g, false);
add(win95);
add(solaris);
add(mac);
win95.setBounds(0, 0, width, height / 3);
solaris.setBounds(0, height / 3, width, height / 3);
mac.setBounds(0, 2 * height / 3, width, height / 3);
}
}
Рисунок 25. Choice
Пример 16.
/* <applet code = "ChoiceDemo" width=300 height=300> </applet> */
import java.awt.*;
import java.applet.*;
public class ChoiceDemo extends Applet {
public void init() {
setLayout(null);
int width = Integer.parseInt(getParameter("width"));
int height = Integer.parseInt(getParameter("height"));
Choice os = new Choice(); Choice browser = new Choice();
os.addItem("Windows 95/98");
os.addItem("Solaris 2.5"); os.addItem("MacOS 7.5");
browser.addItem("Netscape Navigator 3.0"); browser.addItem("Netscape Communicator 4.5");
browser.addItem("Internet Explorer 3.0");
browser.addItem("Mosaic 3.0"); browser.addItem("Lynx 2.4");
browser.select("Netscape Communicator 4.5");
add(os); add(browser);
os.setBounds(0, 0, width, height / 2);
browser.setBounds(0, height / 2, width, height / 2);
}
}
Рисунок 26. List
Пример 17.
/* <applet code = "ListDemo" width=200 height=100> </applet> */
import java.awt.*;
import java.applet.*;
public class ListDemo extends Applet {
public void init() {
setLayout(null);
int width = Integer.parseInt(getParameter("width"));
int height = Integer.parseInt(getParameter("height"));
List os = new List(0, true); List browser = new List(0, false);
os.add("Windows 95/98");
os.add("Solaris 2.5"); os.add("MacOS 7.5");
browser.add("Netscape Navigator 3.0");
browser.add("Netscape Communicator 4.5");
browser.add("lnternet Explorer 4.0");
browser.add("Mosaic 3.0"); browser.add("Lynx 2.4");
browser.select(1);
add(os); add(browser);
os.setBounds(0, 0, width, height / 2);
browser.setBounds(0, height / 2, width, height / 2);
}
}
Рисунок 27. Scrollbar
Пример 18.
/* <applet code = "ScrollbarDemo" width=200 height=100> </applet> */
import java.awt.*;
import java.applet.*;
public class ScrollbarDemo extends Applet {
public void init() {
setLayout(null);
int width = Integer.parseInt(getParameter("width"));
int height = Integer. parseInt(getParameter("height"));
Scrollbar hs = new Scrollbar(Scrollbar.HORIZONTAL, 50, width / 10, 0, 100);
Scrollbar vs = new Scrollbar(Scrollbar.VERTICAL, 50, height / 2, 0, 100);
add(hs);
add(vs);
int thickness = 16;
hs.setBounds(0, height - thickness, width - thickness, thickness);
vs.setBounds(width - thickness, 0, thickness, height - thickness);
}
}
Рисунок 28. TextField
Пример 19.
/* <applet code = "TextFieldDemo" width=200 height=100> </applet> */
import java.awt.*;
import java.applet.*;
public class TextFieldDemo extends Applet {
public void init() {
setLayout(null);
int width = Integer.parseInt(getParameter("width"));
int height = Integer.parseInt(getParameter("height"));
Label namep = new Label("Name : ", Label.RIGHT);
Label passp = new Label("Password : ", Label.RIGHT);
TextField name = new TextField(8); TextField pass = new TextField(8);
pass.setEchoChar('*');
add(namep); add(name); add(passp); add(pass);
int space = 25; int w1 = width / 3;
namep.setBounds(0, (height - space) / 2, w1, space);
name.setBounds(w1, (height - space) / 2, w1, space);
passp.setBounds(0, (height + space) / 2, w1, space);
pass.setBounds(w1, (height + space) / 2, w1, space);
}
}
Рисунок 29. TextArea
Пример 20.
/* <applet code = "TextAreaDemo" width=200 height=200> </applet> */
import java.awt.*;
import java.applet.*;
public class TextAreaDemo extends Applet {
public void init() {
setLayout(null);
int width = Integer.parseInt(getParameter("width"));
int height = Integer.parseInt(getParameter("height"));
String val = "Я пришел к тебе с приветом,\n" +
"Рассказать, что Солнце встало,\n" +
"Что оно зеленым цветом\n" +
"По листам затрепетало\n";
TextArea text = new TextArea(val, 80, 25);
add(text);
text.setBounds(0, 0, width, height);
}
}
Таблица 1. Элементы AWT и порождаемые события
Элемент |
Событие |
Значение |
Component |
ComponentEvent |
Элемент либо перемещен, либо он стал скрытым, либо видимым |
FocusEvent |
Элемент получил или потерял фокус ввода |
|
KeyEvent |
Пользователь нажал или отпустил клавишу |
|
MouseEvent, MouseMotionEvent |
Пользователь нажал или отпустил кнопку мыши, либо курсор мыши вошел или покинул область, занимаемую элементом, либо пользователь просто переместил мышь или переместил мышь при нажатой кнопке мыши |
|
Button |
ActionEvent |
Пользователь нажал кнопку |
Checkbox |
ItemEvent |
Пользователь установил или сбросил флажок |
CheckboxMenuItem |
ItemEvent |
Пользователь установил или сбросил флажок рядом с пунктом меню |
Choice |
ItemEvent |
Пользователь выбрал элемент списка или отменил его выбор |
Container |
ContainerEvent |
Элемент добавлен в контейнер или удален из него |
List |
ActionEvent
ItemEvent |
Пользователь выполнил двойной щелчок мыши на элементе списка Пользователь выбрал элемент списка или отменил выбор |
MenuItem |
ActionEvent |
Пользователь выбрал пункт меню |
Scrollbar |
AdjustmentEvent
|
Пользователь осуществил прокрутку |
TextComponent |
TextEvent |
Пользователь внес изменения в текст элемента |
TextField |
ActionEvent |
Пользователь закончил редактирование текста элемента |
Window |
WindowEvent |
Окно было открыто, закрыто, представлено в виде пиктограммы, восстановлено или требует восстановления |
Таблица 2. События, слушатели и методы
Класс события |
Интерфейс слушателя |
Методы слушателя |
ActionEvent |
ActionListener |
actionPerformed() |
AdjustmentEvent |
AdjustmentListener |
adjustmentValueChanged() |
ComponentEvent |
ComponentListener |
componentHidden() componentMoved() componentResized() componentShown() |
ContainerEvent |
ContainerListener |
componentAdded() componentRemoved() |
FocusEvent |
FocusListener |
focusGained() focusLost () |
ItemEvent |
ItemListener |
itemStateChanged() |
KeyEvent |
KeyListener |
keyPressed() keyReleased() keyTyped() |
MouseEvent |
MouseListener |
mouseClicked() mouseEntered() mouseExited() mousePressed() mouseReleased() |
MouseMotionEvent |
MouseMotionListener |
mouseDragged() mouseMoved() |
TextEvent |
TextListener |
textValueChanged() |
WindowEvent |
WindowListener |
windowActivated() windowClosed() windowClosing() windowDeactivated() windowDeiconified() windowlconified() windowOpened() |
Пример 21.
/* <applet code = "Scribble2" width=640 height=480> </applet> */
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Scribble2 extends Applet implements MouseListener, MouseMotionListener {
private int last_x, last_y;
public void init() {
this.addMouseListener(this) ;
this.addMouseMotionListener(this);
}
public void mousePressed(MouseEvent e) {
last_x = e.getX();
last_y = e.getY();
}
public void mouseDragged(MouseEvent e) {
Graphics g = this.getGraphics();
int x = e.getX(), y = e.getY();
g.drawLine(last_x, last_y, x, y);
last_x = x; last_y = y;
}
public void mouseReleased(MouseEvent e) {;}
public void mouseClicked(MouseEvent e) {;}
public void mouseEntered(MouseEvent e) {;}
public void mouseExited(MouseEvent e) {;}
public void mouseMoved(MouseEvent e) {;}
}
Рисунок 30. Результат работы примера 21.
Пример 22.
package ru.smr.ipsi.ConformingEstimation;
abstract public class ConformingEstimation {
private double[][] x;
private double[] y;
protected final int n;
protected final int m;
protected class LowerSubsystem {
public int[] code;
public double[] estimate;
private void calculateEstimate() {
estimate = solveLinearEquationSystem(x, y);
}
}
// ...
Пример 23.
abstract public class ClassA {
protected static class ClassB {
...
}
}
Пример 24.
public class ClassA {
protected interface InterfaceB {
...
}
}
Пример 25.
abstract public class ClassA {
private class ClassB {
...
}
}
Пример 26.
public class ClassA {
public Iterator iterator() {
class Iter implements Iterator {
...
}
...
return new Iter();
}
Пример 27.
import java.awt.*;
import java.applet.*;
public class MyApplet extends Applet {
...
public void init() {
Button btn = new Button(“?”);
add(btn);
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
((Button)e.getSource()).setLabel(“!”);
}
});
}
}
Рисунок 31. Windows
Рисунок 32. Motif
Рисунок 33. Java (Metal)
Рисунок 34. Иерархия классов
Рисунок 35. Иерархия классов
Пример 28.
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.applet.*;
import javax.swing.*;
public class SwingApplet extends JApplet {
JButton button;
public void init() {
String laf = UIManager.getSystemLookAndFeelClassName();
try {
UIManager.setLookAndFeel(laf);
} catch (UnsupportedLookAndFeelException exc) {
System.err.println("Warning: UnsupportedLookAndFeel: " + laf);
} catch (Exception exc) {
System.err.println("Error loading " + laf + ": " + exc);
}
getContentPane().setLayout(new FlowLayout());
button = new JButton("Hello, I'm a Swing Button!");
getContentPane().add(button);
}
}
Пример 29.
import java.awt.*;
import javax.swing.*;
public class CenteredFrameTest {
public static void main(String[] args) {
CenteredFrame frame = new CenteredFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class CenteredFrame extends JFrame {
public CenteredFrame() {
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int screenHeight = screenSize.height;
int screenWidth = screenSize.width;
setSize(screenWidth / 2, screenHeight / 2);
setLocation(screenWidth / 4, screenHeight / 4);
Image img = kit.getImage("icon.gif");
setIconImage(img); setTitle("CenteredFrame");
}
}
Пример 30.
class NotHelloWorldPanel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString("Not a Hello, World program",
MESSAGE_X, MESSAGE_Y);
}
public static final int MESSAGE_X = 75;
public static final int MESSAGE_Y = 100;
}
Пример 31.
import java.lang.reflect.*;
class ListMethods {
public static void main(String[] argv) throws ClassNotFoundException {
Class c = Class.forName(argv[0]);
Constructor[] cons = c.getConstructors( );
printList("Constructors", cons);
Method[] meths = c.getMethods( );
printList("Methods", meths);
Field[] fields = c.getFields();
printList("Fields", fields);
}
static void printList(String s, Object[] o) {
System.out.println("*** " + s + " ***");
for (int i = 0; i < o.length; i++)
System.out.println(o[i].toString( ));
}
}
Пример 32.
import java.lang.reflect.*;
public class Main {
public static void main(String[] args) {
if (args.length == 3) {
try {
Class c = Class.forName(args[0]);
Method m = c.getMethod(args[1], new Class [] {Double.TYPE});
Double val = Double.valueOf(args[2]);
Object res = m.invoke(null, new Object [] {val});
System.out.println(res.toString());
} catch (ClassNotFoundException e) {
System.out.println("Класс не найден");
} catch (NoSuchMethodException e) {
System.out.println("Метод не найден");
} catch (IllegalAccessException e) {
System.out.println("Метод недоступен");
} catch (InvocationTargetException e) {
System.out.println("При вызове возникло исключение");
}
}
}
}
Рисунок 36. Понятие порта
Рисунок 37. Абстракция сокета
Рисунок 38. Адресация
Рисунок 39. Общая схема соединения
Пример 33.