[Закрыть]
 
popoff.donetsk.ua
Жизнь замечательна и удивительна, если замечать и удивляться.
Начало | Новости | Статьи | Форум | Опросы | Карта сайта | Обо мне
popoff.donetsk.ua - Форум - Java и распределённые системы обработки данных - Виртуальные часы

Виртуальные часы

форумы popoff.donetsk.ua
Страницы: [1]
<< Новый  |  Старый >>  |  Ответ не возможен

Внимание! Этот топик устарел. Пожалуйста, создайте новый топик, чтобы задать интересующий Вас вопрос.

Автор Сообщение
Гость Александр url://forum.message:2508
Виртуальные часы
Александр

Здравствуйте! Приезжал к вам вчера на консультацию, привозил первую лабу на проверку. Вы сказали прислать код на форум.
Какие будут замечания?


import java.text.*;
import java.util.*;
import java.awt.*;
import javax.swing.*;

class Clock extends Panel implements Runnable  {

    

//Параметры внешнего вида часов
    public static Color BG_COLOR = Color.BLACK;
    public static Color FONT_COLOR = Color.GREEN;
    public static int FONT_SIZE = 64;
    public static String FONT_NAME = Arial;
   
    private SimpleDateFormat timeFormat = new  SimpleDateFormat(HH:mm:ss);

    

private String timeString = ;
    private Font font;
    private Thread timer;

    

public Clock () {
      super();

      

//Инициализация шрифта и цвета фона
      font = new Font(FONT_NAME, Font.PLAIN, FONT_SIZE);
      setBackground(BG_COLOR);

      

//Запуск потока, который будет инициировать обновление часов
      timer = new Thread(this);
      timer.start();
    
    }

  

//Метод отрисовки
  public void paint (Graphics g) {
    super.paint (g);

    

//Форматируется текущая дата
    timeString =  timeFormat.format(new Date());
    g.setFont(font);

    

//Определяются координаты вывода строки времени
    int x, y;    
    FontMetrics fm = g.getFontMetrics ();
    int strwidth = fm.stringWidth (timeString);
    x = getSize ().width/2 - strwidth/2;

    

int ascent = fm.getMaxAscent ();
    int descent= fm.getMaxDescent ();
    y = getSize ().height/2 - descent/2 + ascent/2;

    

g.setColor(FONT_COLOR);
    g.drawString (timeString, x, y);

  

}

  

//Метод, выполняющийся в потоке (Thread) для обновления циферблата
  public void run() {
        while (true) {
            try {
                Thread.sleep(200);
            } catch (InterruptedException e) {
            }
            repaint();   //вызываем перерисовку
        }
  }

}

public class ClockTest {

   

public static void main(String[] args) {
        new ClockTest().run();
   }

   

private void run() {
     Clock clock = new Clock();
     JFrame frame = new JFrame(«Часы»);
   
   //Располагаем окно часов по центру
   int w, h, l, t, p_w, p_h;
   Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
   p_w = 2; //Окно займет 1/p_w часть экрана по ширине
   p_h = 4; //Окно займет 1/p_h часть экрана по высоте
   w = (int)(d.getWidth() / p_w);
   h = (int)(d.getHeight() / p_h);
   l= (int)(  (d.getWidth()-w)/2  );
   t= (int)(  (d.getHeight()-h)/2  );

   

//Устанавливаем размеры и положение окна
   frame.setSize(w, h);
   frame.setLocation(l, t);

   

//Добавляем панель часов в окно
   frame.add(clock);

   
   

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   frame.setVisible(true);
   }
}

popoff
Yuri
Июл, 2004
Сообщений: 931
popoff url://forum.message:2511

Класс виртуальных часов - это простой класс. Он не должен ничего наследовать. Все лишние поля вроде цветов, размеров шрифтов и прочих нужно убрать из этого класса. Если Вы хотите сделать визуальное представление для виртуальных часов (это можно, приветствуется, но совсем не обязательно), то это должен быть отдельный класс.

А где же у Вас хранится показание виртуальных часов? Вам нужно разобраться с системами имитационного моделирования, понять, что должны делать виртуальные часы в этих системах и сделать именно часы для системы имитационного моделирования, а не какие-нибудь ещё.

Класс с тестами должен проверять правильность работы виртуальных часов.
В частности, он должен устанавливать разнообразные значения и смотреть, перевелись ли часы и как они перевелись.
Нужно проверить сброс часов в 0, перевод назад, установку отрицательного времени. То есть, все правильные и неправильные варианты.

В классе с тестами, как и в классе с виртуальными часами, не должно ничего быть, кроме самих тестов. Если хотите протестировать визуальное представление для виртуальных часов, то это должен быть класс с тестами, отдельный от класса с тестами для самих виртуальных часов.

Класс с методом main() - должен быть отдельный класс.

________________________________
Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить.

Внимание! Этот топик устарел. Пожалуйста, создайте новый топик, чтобы задать интересующий Вас вопрос.

Страницы: [1]
<< Новый  |  Старый >>  |  Ответ не возможен
Вход
Поиск[?]:
Personal Photo.сайт:
www.denisey.com.ua