Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

fileWriter = new FileWriter(file, true);// Чтение и запись текстовых файлов //можно осуществить с помощью классов FileReader и FileWriter из java.io.*;




fileWriter = new FileWriter(file, true); // Чтение и запись текстовых файлов //можно осуществить с помощью классов FileReader и FileWriter из java. io. *;

} public synchronized void writing(String str, int i) { try {    fileWriter. append(str + i); System. out. print(str + i); Thread. sleep((long)(Math. random() * 50)); fileWriter. append(" -> " + i + " " ); System. out. print(" -> " + i + " " ); } catch (IOException e) { System. err. print(" ошибка файла: " + e); } catch (InterruptedException e) { System. err. print(" ошибка потока: " + e); } }   public void close() {    try { fileWriter. close(); } catch (IOException e) { System. err. print(" ошибка закрытия файла: " + e); } }} package synch; public class SyncThread extends Thread { private Resource rs; public SyncThread(String name, Resource rs) { super(name); this. rs = rs; } public void run() { for (int i = 0; i < 5; i++) { rs. writing(getName(), i); // место срабатывания синхронизации } }} package by. bsu. synch; import java. io. IOException; public class SynchroRun { public static void main(String[ ] args) { Resource s = null; try { s = new Resource (" data\\result. txt" ); SyncThread t1 = new SyncThread(" First", s); SyncThread t2 = new SyncThread(" Second", s); t1. start(); t2. start(); t1. join(); t2. join(); } catch (IOException e) { System. err. print(" ошибка файла: " + e); } catch (InterruptedException e) { System. err. print(" ошибка потока: " + e); } finally { s. close(); } }}

5. 3. Задания к лабораторной работе №5

 

  1. Крестики – нолики. Вариант графический.

 

  1. Крестики – нолики.  Упрощенный вариант – консольный. Должны выдаваться сообщения: 1-й поток окончил! 2-й поток окончил! И имя выигавшего потока, если была выиграшная комбинация.

 

  1. Гонки. 3 участника наперегонки наращивают каждый свой ProgressBar. Вариант графический.

 

  1. Гонки –счет. 5 участников ведут счет до 10. По окончании должно выдаваться консольное сообщение каждым об окончании счета и имя потока-победителя.

 

  1. Спорщики. Три участника путешестивия наперебой выбирают маршрут (Суша, море, воздух). По окончании объявляется победитель и выбранный способ перемещения.

 

  1. Слова. Три потока в стронгой очередности считывают слова из одного и того же файла в свой массив слов и в той же очередности выводят в консоль.

 

  1. Лото. Четыре игрока строго по очреди высталяют свои фишки (у каждго свой цвет фишки) на общую доску, о чем каждый выдает сообщение, например: " Красный, фишка 3". По окончании (когда все клетки заполнены) сообщается, кто закончил первым. (Возможен графический и консольный вариант).

 

  1. Лото. Предыдущая задача, но порядок игроков и размещение фишек случайное.

 

  1. Автостоянка. Доступно несколько машиномест. На одном месте может находиться только один автомобиль. Если все места заняты, то автомобиль не станет ждать больше определенного времени и уедет на другую стоянку.

 

Приложение 1. Справочная информация по классам Java

AWT
Содержание:

  • Frame
  • Класс Graphics
  • Класс Color
  • Класс Font
  • Класс FontMetrics

 

AWT
Содержатся в пакете java. awt:

  • Component
  • Container
    • Panel - окно без линейки заголовка, линейки меню, рамки.
    • Window - окно верхнего уровня.
      • Frame


Frame
Методы:

void setSize(int newWidth, int newHeight); // Устанавливается размер окна в пикселях. void setSize(Dimension newSize); Dimension getSize(); // Получение текущего размера окна. void setVisible(boolean visibleFlag); // Устанавливает видимость окна. void setTitle(String newTitle); // Изменяет заголовок окна.

setVisible(false); - удаляет окна с экрана
Чтобы перехватить событие закрытия окна, нужно реализовать метод windowClosing() интерфейса WindowListener.

Класс Graphics - работа с графикой осуществляется через методы paint(), update().

void drawLine(int startX, int startY, int endX, int endY); // Рисует линию. void drawRect(int top, int left, int width, int height); // Контурный прямоугольник. void fillRect(int top, int left, int width, int height); // Закрытый прямоугольник. void drawRoundRect(int top, int left, int width, int height, int xDiam, int yDiam); // Контурный прямоугольник с закругленными углами. void fillRoundRect(int top, int left, int width, int height, int xDiam, int yDiam); // Закрытый прямоугольник с закругленными углами. void drawOval(int top, int left, int width, int height); // Контурный эллипс внутри заданного прямоугольника void fillOval(int top, int left, int width, int height); // Закрытый эллипс внутри заданного прямоугольника void drawArc(int top, int left, int width, int height, int startAngle, int sweepAngle); // Контурная дуга void fillArc(int top, int left, int width, int height, int startAngle, int sweepAngle); // Закрытая дуга void drawPolygon(int x[], int y[], int numPoints); // Контурный многоугольник void fillPolygon(int x[], int y[], int numPoints); // Закрытый многоугольник


Класс Color - работа с цветом.

// Конструктор. Color(int red, int green, int blue); // RGB (значения от 0 до 255)Color(int rgbValue); Color(float red, float green, float blue) // Значения от 0, 0 до 1, 0.

setForeground() - установить цвет переднего плана.
setBackground() - установить цвет фона.

// Методы. // Преобразование цвета из HSB (hue-saturation-brightness - // цвет-насыщенность-яркость) в RGB. Static int HSBtoRGB(float hue, float saturation, float brightness); Static float[] RGBtoHSB(int red, int green, int blue, float vallues[]); int getRed(); int getGreen(); int getBlue(); int getRGB(); // Изменить текущий цвет рисования. void setColor(Color newColor); Color getColor();

По умолчанию, новый вывод в окно перекрывает любое существующее содержимое:

// Специфицирует цвет, который будет соединен операцией XOR // с содержимым окна во время рисования. void setXORMode(Color xorColor); // Возвращает к методу рисования с перекрытием. void setPointMode();


Класс Font - работа со шрифтами

// Возвращает массив объектов Font, описывающих все доступные шрифты. Font[] getAllFonts(); // Возвращает массив строк, содержащих имена доступных семейств шрифтов. String[] getAvailableFontFamilyNames(); // Возвращает ссылку на объект класса GraphicsEnvironment. Static GraphicsEnvironment getLocalGraphicsEnvironment(); // Пример: GraphicsEnvironment ge = GraphicsEnvironment. getLocalGraphicsEnvironment(); String FontList[] = ge. getAvailableFontFamilyNames();

Конструктор:

Font(String fontName, int fontStyle, int pointSize);

fontName: Dialog, DialogInput, SansSerif, Monospaced.
fontStyle: Font. PLAIN, Font. BOLD, Font. ITALIC - можно скомбинировать с помощью " ИЛИ".

// Методы: // Выбрать новый шрифт. void setFont(Font fontObj); // Получить текущий шрифт. Font getFont(); //Пример 1: public void paint(Graphics g) { Font f = g. getFont(); String fontName = f. getName(); // Имя шрифта. String fontFamily = f. getFamily(); // Семейство. int fontSize = f. getSize();     // Размер. int fontStyle = f. getStyle();   // Стиль. g. drawString(fontName + fontFamily, 200, 20); // Делаем надпись. } ПРИМЕР2: Класс Font import java. awt. *; import javax. swing. *; public class ForegroundWindow extends JFrame {      public class DrawingPanel extends JPanel {               protected void paintComponent(Graphics g) {            super. paintComponent(g); g. setFont(new Font(" Times New Roman", Font. BOLD, 12)); g. drawString(" Times New Roman", 20, 50); g. setFont(new Font(" Courier New", Font. ITALIC, 16)); g. drawString(" Courier New", 20, 100); g. setFont(new Font(" Arial Black", Font. ITALIC, 10)); g. drawString(" Arial Black", 20, 150); g. setFont(new Font(" Tahoma", Font. PLAIN, 20)); g. drawString(" Tahoma", 20, 200); g. setFont(new Font(" Sans Serif", Font. ITALIC & Font. BOLD, 14)); g. drawString(" Sans Serif", 20, 250); } } public ForegroundWindow() {   super(" Пример окна с фонтами" ); setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE); setSize(300, 300); add(new DrawingPanel()); setVisible(true); } public static void main(String[] args) { EventQueue. invokeLater(new Runnable() { public void run() {         new ForegroundWindow(). setVisible(true);      } }); } }


Класс FontMetrics - инкапсулирует разнообразную информацию о шрифте.
Местоположение указывается от левой границы базовой лини, а не от верхнего левого края.

// Методы: // Возвращает текущий шрифт. Font getFont(); // Возвращает ширину numBytes символов, содержащихся в массиве b, // начиная со start. int bytesWidth(byte b[], int start, int numBytes); int charWidth(char c[], int start, int numChars); // Возвращает ширину символа c. int charWidth(char c); // Возвращает возвышение шрифта. int getAscent(); // Возвращает спуск шрифта. int getDescent(); // Возвращает высоту строки текста. int getHeight(); // Возвращает пробел между строками. int getLeiding(); // Возвращает ширину наиболее широкого символа. int getMaxAdvance(); // Возвращает максимальное возвышение. int getMaxAscent(); // Возвращает максимальный спуск. int getMaxDescent(); // Возвращает ширину первых 256 символов. int[] getWidth(); // Возвращает ширину строки, указанной в strint stringWidth(String str);

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...