Курсовая работа: Разработка Java-апплета и подписывание архивного JAR-файла электронной цифровой подписью
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
{
// Сброс данных из буфера потока (запись в файл)