Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Примеры_2010.doc
Скачиваний:
4
Добавлен:
16.03.2015
Размер:
874.5 Кб
Скачать

Примеры

Пример 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.