Обращением к локальной файловой системе — КиберПедия 

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Обращением к локальной файловой системе

2019-12-18 104
Обращением к локальной файловой системе 0.00 из 5.00 0 оценок
Заказать работу

апплет архивный электронный цифровой подпись

import java.applet.Applet;

import java.awt.*;

import java.awt.event.*;

import java.io.*;

import java.util.Calendar;

// Класс апплета, реализующий интерфейсы блоков прослушивания событий

public class Lab4 extends Applet implements ActionListener,ItemListener,Runnable

{

Panel p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,cards,pfield,pb,pread;

Label lb1,lb2,lb3;

CheckboxGroup cbg;

Checkbox cb1,cb2,cb3,cb4;

List list;

Canvas cv;

Button b1,b2,b3,b4,start,stop,read;

CardLayout cardLO;

Scrollbar sb1,sb2,sb3,sb4;

Color col;

int posX,strWidth;

FontMetrics fm;

int rectX=0,rectY=0,posFlag=0,movFlag=0,ovalX=0,ovalY=0;

int animFlag=0;

int rColor,gColor,bColor;

// Флаг остановки анимации

boolean stopFlag;

// Поток выполняющий анимацию

Thread t = null;

//Текстовая область для вывода содержимого файла журнала

TextArea fileText;

// Имя файла-журнала для записи информации о работе апплета

String fileName = "";

// Разделитель строк (признак конца строки)

String ls;

// Буферизированный символьный поток записи в файл

BufferedWriter out;

public void init()

{

setLayout(new GridLayout(2,2));

setForeground(Color.black);

col = Color.black;

// ЛЕВАЯ ВЕРХНЯЯ ПАНЕЛЬ

p1 = new Panel(new BorderLayout());

p1.setBackground(Color.lightGray);

p2= new Panel();

lb1 = new Label("Активная панель: ",lb1.CENTER);

p2.add(lb1);

p1.add(p2,BorderLayout.NORTH);

// Панель радиокнопок внутри ЛЕВОЙ ВЕРХНЕЙ панели

p3 = new Panel(new GridLayout(2,2));

cbg = new CheckboxGroup();

cb1= new Checkbox("Все панели",cbg,true);

cb2= new Checkbox("1-я панель",cbg,false);

cb3= new Checkbox("2-я панель",cbg,false);

cb4= new Checkbox("3-я панель",cbg,false);

cb1.addItemListener(this);

cb2.addItemListener(this);

cb3.addItemListener(this);

cb4.addItemListener(this);

p3.add(cb1);

p3.add(cb2);

p3.add(cb3);

p3.add(cb4);

p1.add(p3,BorderLayout.CENTER);

add(p1);

// ВЕРХНЯЯ ПРАВАЯ ПАНЕЛЬ

p4 = new Panel(new GridLayout(1,1));

list = new List(9,false);

list.add("Чёрный");

list.add("Синий");

list.add("Красный");

list.add("Зелёный");

list.add("Жёлтый");

list.add("Оранжевый");

list.add("Розовый");

list.add("Фиолетовый");

list.add("Тёмно-серый");

list.addItemListener(this);

p4.add(list);

add(p4);

// ЛЕВАЯ НИЖНЯЯ ПАНЕЛЬ

// Панель с кнопками

p5 = new Panel(new GridLayout(2,2));

b1 = new Button("Квадрат");

b2 = new Button("Круг");

b3 = new Button("Треугольник");

b4 = new Button("Строка");

b1.addActionListener(this);

b2.addActionListener(this);

b3.addActionListener(this);

b4.addActionListener(this);

p5.add(b1);

p7.add(b2);

p5.add(b3);

p5.add(b4);

pb = new Panel(new GridLayout(1,2,5,0));

lb2 = new Label("Управление потоками",lb1.CENTER);

start = new Button("Запуск"); start.addActionListener(this);

stop = new Button("Остановка");stop.addActionListener(this);

pb.add(start);

pb.add(stop);

//!!! ПАНЕЛЬ ДЛЯ ЧТЕНИЯ ФАЙЛА-ЖУРНАЛА!!!

pfield = new Panel(new BorderLayout());

pread = new Panel(new GridLayout(3,1));

read = new Button("Чтение файла-журнала");

read.addActionListener(this);

// Текстовая область для вывода информации из файла журнала

fileText = new TextArea();

// Название файла-журнала задаётся параметром в HTML-файле

// или если такого нет – создаётся по умолчанию

fileName = getParameter("FileName");

if (fileName == null)

fileName = "log.txt";

ls = System.getProperty("line.separator"); // разделитель строк

fileText.setBackground(Color.white);

pread.add(lb2);

pread.add(pb);

pread.add(read);

pfield.add(p5,BorderLayout.NORTH);

pfield.add(pread,BorderLayout.CENTER);

pfield.add(fileText,BorderLayout.SOUTH);

add(pfield);

// ПРАВАЯ НИЖНЯЯ ПАНЕЛЬ

// ПАНЕЛЬ С КАРТАМИ (ГЛАВНАЯ)

cardLO = new CardLayout();

cards = new Panel();

cards.setLayout(cardLO);

cards.setBackground(Color.white);

posX = 65;

// ПЕРВАЯ ПАНЕЛЬ В КАРТАХ

p6 = new Panel(new BorderLayout())

{

public void paint(Graphics g)

{

if(animFlag==0)

{

g.setColor(col);

g.drawRect(rectX,rectY,50,50); }

}

};

// ВТОРАЯ ПАНЕЛЬ В КАРТАХ

p7 = new Panel(new BorderLayout())

{

public void paint(Graphics g)

{

if(animFlag==1)

{

g.setColor(col);

g.fillOval(ovalX,ovalY,50,50); }

}

};

// ТРЕТЬЯ ПАНЕЛЬ В КАРТАХ

p8 = new Panel(new BorderLayout())

{

public void paint(Graphics g)

{

g.setColor(col);

int x[] = {posX,posX+40,posX+80};

int y[] = {80,20,80};

g.drawPolygon(x,y,3);

}

};

sb3= new Scrollbar(Scrollbar.HORIZONTAL,0,1,0,100);

sb3.addAdjustmentListener(new AdjustmentListener()

{

public void adjustmentValueChanged(AdjustmentEvent ae)

{

posX = (ae.getValue())*(cards.getSize().width -80) /sb3.getMaximum();

p8.repaint();

}

});

p8.add(sb3,BorderLayout.SOUTH);

// ЧЕТВЁРТАЯ ПАНЕЛЬ В КАРТАХ

P9 = new Panel(new BorderLayout())

{

public void paint(Graphics g)

{

fm = g.getFontMetrics();

strWidth = fm.stringWidth("J A V A");

g.setFont(new Font("Dialog",Font.ITALIC,20));

g.setColor(col);

g.drawString("J A V A",posX,65);

}

};

sb4= new Scrollbar(Scrollbar.HORIZONTAL,0,1,0,5);

sb4.addAdjustmentListener(new AdjustmentListener()

{

public void adjustmentValueChanged(AdjustmentEvent ae)

{

posX = (ae.getValue())*(cards.getSize().width – strWidth)/sb4.getMaximum();

p9.repaint();

}

});

p9.add(sb4,BorderLayout.SOUTH);

// ДОБАВЛЕНИЕ КАРТ В ПАНЕЛЬ С КАРТАМИ (cards)

cards.add(p6,"sqaure");

cards.add(p7,"oval");

cards.add(p8,"rect");

cards.add(p9,"text");

add(cards);

// СОЗДАНИЕ БУФЕРИЗИРОВАННОГО СИМВОЛЬНОГО ПОТОКА ЗАПИСИ В ФАЙЛ

try

{

// В качестве параметра в данном конструкторе класса Buffered используется

// ссылка на объект основного потока (приёмника данных)

out = new BufferedWriter(new FileWriter(fileName));

}

catch(IOException ex)

{

fileText.setText("Ошибка при создании потока записи: " + ls);

fileText.append(ex.toString() + ls);

}

catch(SecurityException ex)

{

fileText.setText("Нет разрешения доступа к файлу: " + ls);

fileText.append(ex.toString() + ls);

read.setEnabled(false);

}

if (out!= null)

{

// Если создание Buffered-потока прошло успешно то в качестве данных, которые

// будут заполнять буфер будет являться сообщение от текущей дате и времени

Calendar c = Calendar.getInstance();

String dateMessage ="Дата и время: " + c.get(Calendar.DAY_OF_MONTH) + "/" +

(c.get(Calendar.MONTH)+1) + " – " + c.get(Calendar.YEAR) +

" " + c.get(Calendar.HOUR_OF_DAY) + ":" +

c.get(Calendar.MINUTE);

// После записи в String-переменную dateMessage информации о дате –

// вызывается метод writeLogMessage

writeLogMessage(dateMessage);

writeLogMessage("Инициализация апплета завершена");

}

/*--------------INIT--------------*/

}

// Вывод сообщения в буферизированный поток для записи в файл

private void writeLogMessage(String message)

{

// Запись в файл осуществляется вызовом метода write объек-та out типа BufferedWriter

try

{

out.write(message);

out.newLine();

}

catch(IOException ex)

{

fileText.setText("Ошибка записи в файл:" + ls);

fileText.append(ex.toString() + ls);

}

}

// Запуск потоков

public void run()

{

// Пока флаг остановки анимации равен false – происходит анимация

while (!stopFlag)

{

try

{

if(animFlag==0)

{

if(posFlag==0) // Начальное движение вправо по верхней грани

{

p6.repaint(); // Перерисовка

// Временное (на 40 мс) остановка потока для создания эффекта анимации

// Далее идут аналогичные изменения координат/

Thread.currentThread().sleep(40);

rectX+=5;

if(rectX>p6.getSize().width-50)

{

rectX-=7;

posFlag =1;

if(posFlag==1)

{

rColor = (int)(255*Math.random());

gColor = (int)(255*Math.random());

bColor = (int)(255*Math.random());

col = new Color(rColor,gColor,bColor);

p6.repaint();

}

}

}

if(posFlag==1) // Движение вниз по правой грани

{

p6.repaint();

Thread.currentThread().sleep(40); // приостановить поток

rectY+=5;

if(rectY>p6.getSize().height – 50)

{

rectY=p6.getSize().height-53;

posFlag=2;

if(posFlag==2)

{

rColor = (int)(255*Math.random());

gColor = (int)(255*Math.random());

bColor = (int)(255*Math.random());

col = new Color(rColor,gColor,bColor);

p6.repaint();

}

}

}

if(posFlag==2) // Движение влево по нижней грани

{

if(rectX>0)

{

p6.repaint();

Thread.currentThread().sleep(40);

rectX-=5;

}

else

{

rectX=0;

posFlag=3;

if(posFlag==3)

{

rColor = (int)(255*Math.random());

gColor = (int)(255*Math.random());

bColor = (int)(255*Math.random());

col = new Color(rColor,gColor,bColor);

p6.repaint();

}

}

}

if(posFlag==3) // Движение вверх по левой грани

{

if(rectY>0)

{

p6.repaint();

Thread.currentThread().sleep(40);

rectY-=5;

if(rectY<0)

{

rectX=0;

rectY=0;

p6.repaint();

{

if(rectX==0 && rectY==0)

{

posFlag=0;

if(posFlag==0)

{

rColor = (int)(255*Math.random());

gColor = (int)(255*Math.random());

bColor = (int)(255*Math.random());

col = new Color(rColor,gColor,bColor);

p6.repaint();

}

}

}

}

}

}

}

if(animFlag==1)

{

if(movFlag==0) // Движение по диагонали сверху в нижний угол

{

p7.repaint();

Thread.currentThread().sleep(50);

ovalX+=5;

ovalY+=5;

if(ovalX>p7.getSize().width-50)

{

ovalX = p7.getSize().width -50;

ovalY = p7.getSize().height-52;

movFlag =1;

if(movFlag==1)

{

rColor = (int)(255*Math.random());

gColor = (int)(255*Math.random());

bColor = (int)(255*Math.random());

col = new Color(rColor,gColor,bColor);

p7.repaint();

}

}

}

if(movFlag==1) // Движение по нижней грани

{

p7.repaint();

Thread.currentThread().sleep(50);

ovalX-=5;

if(ovalX<0)

{

ovalX=0;

movFlag=2;

if(movFlag==2)

{

rColor = (int)(255*Math.random());

gColor = (int)(255*Math.random());

bColor = (int)(255*Math.random());

col = new Color(rColor,gColor,bColor);

p7.repaint();

}

}

}

if(movFlag==2) // Движение по диагонали снизу вверх

{

p7.repaint();

Thread.currentThread().sleep(50);

ovalX+=5;

ovalY-=5;

if(ovalX>p7.getSize().width-50)

{

ovalX = p10.getSize().width – 52;

ovalY = 0;

movFlag=3;

if(movFlag==3)

{

rColor = (int)(255*Math.random());

gColor = (int)(255*Math.random());

bColor = (int)(255*Math.random());

col = new Color(rColor,gColor,bColor);

p7.repaint();

}

}

}

if(movFlag==3) // Движение по верхней грани в обратном направлении

{

p7.repaint();

Thread.currentThread().sleep(50);

ovalX-=5;

if(ovalX<0)

{

ovalX = 0;

movFlag=0;

if(movFlag==0)

{

rColor = (int)(255*Math.random());

gColor = (int)(255*Math.random());

bColor = (int)(255*Math.random());

col = new Color(rColor,gColor,bColor);

p7.repaint();

}

}

}

}

}

catch (InterruptedException e)

{

return; // Завершить поток

}

}

}

//Реализация блоков прослушивания от кнопок

public void actionPerformed(ActionEvente)

{

String ac = e.getActionCommand();

if(ac.equals("Квадрат"))

{

animFlag=0;

cardLO.show(cards,"sqaure");

writeLogMessage("Рисуется Квадрат");

}

if(ac.equals("Круг"))

{

animFlag=1;

cardLO.show(cards,"oval");

writeLogMessage("Рисуется Круг");

}

if(ac.equals("Треугольник"))

{

cardLO.show(cards,"rect");

}

if(ac.equals("Строка"))

{

cardLO.show(cards,"text");

}

else if("Запуск".equals(ac))

{

t = new Thread(this);

stopFlag = false;

t.start();

start.setEnabled(false);

writeLogMessage("Поток запущен");

}

else if("Остановка".equals(ac))

{

stopFlag=true;

t = null;

start.setEnabled(true);

writeLogMessage("Поток остановлен");

}

if("Чтение файла-журнала".equals(ac))

{

try

{

// Сброс данных из буфера потока (запись в файл)

out.flush();

// Далее происходит чтение из файла и заполнение текстовой области

// данными, содержащимися в текстовом файле Lab4Log.txt

// Создание буферизированного символьного потока чтения из файла*/

BufferedReader in = new BufferedReader(new FileReader(fileName));

String s = "", line;

while ((line = in.readLine())!= null)

s += line + "\n";

fileText.setText(s);

in.close();

}

catch(IOException ex)

{

fileText.setText("Ошибка чтения файла: " + ls);

fileText.append(ex.toString());

}

}

}

// Реализация блока прослушивания от списка List и переключателей(CheckBox)

public void itemStateChanged(ItemEvent ie)

{

if(ie.getSource() == list)

{

String s = list.getSelectedItem();

if(s.equals("Чёрный"))

{

col = Color.black;

}

if(s.equals("Синий"))

{

col = Color.blue;

}

if(s.equals("Красный"))

{

col = Color.red;

}

if(s.equals("Зелёный"))

{

col = Color.green;

}

if(s.equals("Жёлтый"))

{

col = Color.yellow;

}

if(s.equals("Оранжевый"))

{

col = Color.orange;

}

if(s.equals("Розовый"))

{

col = Color.pink;

}

if(s.equals("Фиолетовый"))

{

col = Color.magenta;

}

if(s.equals("Тёмно-серый"))

{

col = Color.darkGray;

}

p6.repaint();

p7.repaint();

p8.repaint();

p9.repaint();

}

}

// Обработка события от CheckBox (Определение доступности панелей и их компонентов)

if(ie.getSource() == cb1)

{

p1.setEnabled(true);p4.setEnabled(true);

p7.setEnabled(true);

cards.setEnabled(true);

}

if(ie.getSource() == cb2)

{

p1.setEnabled(true);p4.setEnabled(true);

p7.setEnabled(false);

cards.setEnabled(false);

}

if(ie.getSource() == cb3)

{

p1.setEnabled(true);p4.setEnabled(false);

p7.setEnabled(true);

cards.setEnabled(false);

}

if(ie.getSource() == cb4)

{

p1.setEnabled(true);p4.setEnabled(false);

p7.setEnabled(false);

cards.setEnabled(true);

}

}

}



Поделиться с друзьями:

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.13 с.