Добавление таймера на апплет

Тема в разделе "Java", создана пользователем Konstantin2209, 6 июн 2011.

Статус темы:
Закрыта.
  1. Konstantin2209

    Konstantin2209 Гость

    Всем привет! :)
    Подскажите пожалуйста, что нужно сделать чтобы добавить обычный таймер с минутами и секундами на апплет?
    Скачал приложение пятнашки, вот на эту форму необходимо добавить таймер, чтобы отсчёт начинался после первого нажатия мышки, и обновлялся после нажатия "новая игра"
    Код (Text):
    package fifteen;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;

    public class Pyatnashki extends JFrame
    {
    JPanel appletPanel;
    JPanel gamePanel = new JPanel();
    BorderLayout borderLayout = new BorderLayout();

    //двумерный массив для хранения чисел от 1 до 16
    int[][] chisla = new int[4][4];

    //массив кнопочек от 1 до 16
    JButton[][] buttons = new JButton[4][4];

    //линия статуса игры
    JLabel status= new JLabel();

    //Конструктор фрэйма
    public Pyatnashki()
    {
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    try
    {
    Components();
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    }


    //Конструктор компонентов фрэйма
    private void Components() throws Exception
    {
    //окно игры
    appletPanel = (JPanel) this.getContentPane();
    this.setLayout(borderLayout);
    this.setBackground(java.awt.Color.red);
    this.setSize(new Dimension(335,395));
    this.setTitle("Игра 'Пятнашки'");
    this.setResizable(false);//невозможность изменения размеров окна

    //Создаем меню
    JMenuBar menuBar = new JMenuBar();
    menuBar.setBackground(java.awt.Color.red);

    //Создаем подменю
    JMenu Game = new JMenu("Игра");
    JMenu Help = new JMenu("Помощь");

    //Добавляем подменю в основное меню
    menuBar.add(Game);
    menuBar.add(Help);

    //Устанавливаем полученное меню на окно
    this.setJMenuBar(menuBar);

    //Создаем элементы подменю Game с обработчиками событий
    JMenuItem NewGame = new JMenuItem("Новая игра");
    JMenuItem Exit = new JMenuItem("Выход");

    //Создаем элемент подменю Help с обработчиками событий
    JMenuItem Dvl = new JMenuItem("Разработчик");
    JMenuItem Spravka = new JMenuItem("Справка");

    //Добавляем обработчики событий по нажатию
    NewGame.addActionListener(new java.awt.event.ActionListener()
    {
    public void actionPerformed(ActionEvent e)
    {
    newGame();
    }
    });

    //Выход из игры
    Exit.addActionListener(new java.awt.event.ActionListener()
    {
    public void actionPerformed(ActionEvent e)
    {
    System.exit(0);
    }
    });

    //вывод информации о разработчике
    Dvl.addActionListener(new java.awt.event.ActionListener()
    {
    public void actionPerformed(ActionEvent e)
    {
    JOptionPane.showMessageDialog(null,"Выполнил - Гурский К.С., группа - АБ-921","Разработчик", JOptionPane.QUESTION_MESSAGE);
    }
    });

    Spravka.addActionListener(new java.awt.event.ActionListener()
    {
    public void actionPerformed(ActionEvent e)
    {
    JOptionPane.showMessageDialog(null,"Для победы в данной игре необходимо расположить все цифры в порядке их возрастания. "
    + "Числа необходимо располагать по строкам, перемещая их с помощью мыши на свободную клетку",
    "Справка", JOptionPane.QUESTION_MESSAGE);
    }
    });


    //Добавляем созданные элементы к подменю
    Game.add(NewGame);
    Game.add(Exit);
    Help.add(Dvl);
    Help.add(Spravka);
    gamePanel.setLayout(null);
    // добавляем кнопочки
    int count=0;
    for(int i = 0;i<4;i++)
    for(int j = 0;j<4;j++)
    {
    buttons[i][j] = new JButton(""+count);
    //устанавливаем обработчик событий
    buttons[i][j].addMouseListener(new mAdapter(i,j));
    buttons[i][j].setSize(80,80);
    buttons[i][j].setLocation(80*j,80*i);
    buttons[i][j].setCursor(new Cursor(Cursor.HAND_CURSOR));
    buttons[i][j].setBackground(java.awt.Color.white);
    gamePanel.add(buttons[i][j]);
    chisla[i][j]=count;//задаем матрицу
    count++;
    }
    buttons[0][0].setText(" ");
    //Добавляем игровую панель с кнопками
    appletPanel.add(gamePanel,BorderLayout.CENTER);
    //обрамляем строку статуса
    status.setBorder(BorderFactory.createEtchedBorder());
    //Добавляем строку статуса
    appletPanel.add(status,BorderLayout.SOUTH);
    //новая игра
    newGame();
    }

    protected void processWindowEvent(WindowEvent e)
    {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING)
    {
    System.exit(0);
    }
    }

    /**Случайным образом переставляем элементы матрицы*/
    public void RandomChisla()
    {
    for(int i = 0;i<100;i++)
    {
    int a = (int)(Math.random()*4);
    int b = (int)(Math.random()*4);
    int a2 = (int)(Math.random()*4);
    int b2 = (int)(Math.random()*4);

    int c = chisla[a][b];
    chisla[a][b] = chisla[a2][b2];
    chisla[a2][b2] = c;
    }
    }


    //Начинаем новую игру
    public void newGame()
    {
    RandomChisla();
    for(int i = 0;i<4;i++)
    for(int j = 0;j<4;j++)
    {
    //пишем на кнопочках числа из матрицы
    if(chisla[i][j]!=0)buttons[i][j].setText(""+chisla[i][j]);
    else buttons[i][j].setText("");
    }
    status.setText("Поехали...");
    gamePanel.setVisible(true);
    }
    /**Класс адаптера прослушивающий события над кнопкой*/
    class mAdapter extends java.awt.event.MouseAdapter
    {
    int posi,posj;
    int startx=0;
    int starty=0;
    /**Конструктор адаптера в зависимости от позиции кнопочки*/
    mAdapter(int posI,int posJ)
    {
    this.posi=posI;
    this.posj=posJ;
    }
    /**При нажатой кнопке мыши*/
    public void mousePressed(MouseEvent e)
    {
    //меняем курсор
    buttons[posi][posj].setCursor(new Cursor(Cursor.MOVE_CURSOR));
    //запоминаем точку начала переноса кнопки
    startx=e.getX();
    starty=e.getY();
    }
    /**При отпускании кнопки мыши*/
    public void mouseReleased(MouseEvent e)
    {
    //меняем курсор
    buttons[posi][posj].setCursor(new Cursor(Cursor.HAND_CURSOR));
    //запоминаем точку окончания переноса кнопки
    int endx=e.getX();
    int endy=e.getY();
    //определяем направление переноса
    //если абсолютная величина (shiftx) больше
    //абсолютной величины (shifty)
    //значит передвигаемся по оси х
    int shiftx=endx-startx;
    int shifty=endy-starty;
    if(Math.abs(shiftx)>Math.abs(shifty))
    {
    //определяем направление движения по оси х
    if(shiftx>0)
    {//впрово

    //если это не крайние правые кнопки
    //и правая кнопка пустая
    //меняем местами кнопку с пустой кнопкой
    if((posj != 3) && (chisla[posi][posj+1] == 0))
    {
    chisla[posi][posj+1] = chisla[posi][posj];
    chisla[posi][posj]=0;
    buttons[posi][posj].setText("");
    buttons[posi][posj+1].setText(""+chisla[posi][posj+1]);
    status.setText("Верный ход");
    }else status.setText("Ход невозможен");
    }
    else
    {//влево

    //если это не крайние левые кнопки
    //и левая кнопка пустая
    //меняем местами кнопку с пустой кнопкой
    if((posj != 0) && (chisla[posi][posj-1] == 0))
    {
    chisla[posi][posj-1] = chisla[posi][posj];
    chisla[posi][posj]=0;
    buttons[posi][posj].setText("");
    buttons[posi][posj-1].setText(""+chisla[posi][posj-1]);
    status.setText("Верный ход");
    }else status.setText("Ход невозможен");
    }
    }
    else
    {
    //определяем направление движения по оси y
    if(shifty>0)
    {//вниз

    //если это не крайние нижние кнопки
    //и нижняя кнопка пустая
    //меняем местами кнопку с пустой кнопкой
    if((posi != 3) && (chisla[posi+1][posj] == 0))
    {
    chisla[posi+1][posj] = chisla[posi][posj];
    chisla[posi][posj]=0;
    buttons[posi][posj].setText("");
    buttons[posi+1][posj].setText(""+chisla[posi+1][posj]);
    status.setText("Верный ход");
    }else status.setText("Ход невозможен");
    }
    else
    {//вверх

    //если это не крайние верхние кнопки
    //и верхняя кнопка пустая
    //меняем местами кнопку с пустой кнопкой
    if((posi != 0) && (chisla[posi-1][posj] == 0))
    {
    chisla[posi-1][posj] = chisla[posi][posj];
    chisla[posi][posj]=0;
    buttons[posi][posj].setText("");
    buttons[posi-1][posj].setText(""+chisla[posi-1][posj]);
    status.setText("Верный ход");
    }else status.setText("Ход невозможен");
    }
    }
    //проверяем все ли числа стоят на своих местах
    //если да то победа!!!
    int count=1;
    int error=0;
    for(int i = 0;i<4;i++)
    for(int j = 0;j<4;j++)
    {
    if(chisla[i][j]!=count)error++;
    count++;
    }
    if(error==1)
    {
    status.setText("Вы победили!");
    int result = JOptionPane.showConfirmDialog(null, "Вы победили!","Поздравляем, Вы победили! Начать новую игру?",JOptionPane.YES_NO_OPTION);
    if (result == JOptionPane.YES_OPTION)newGame();
    else gamePanel.setVisible(false);
    }
    }
    }
    }




    package fifteen;

    import javax.swing.UIManager;
    import java.awt.*;
    public class Run
    {
    boolean packFrame = false;
    /**Construct the application*/
    public Run()
    {
    Pyatnashki frame = new Pyatnashki();
    //Validate frames that have preset sizes
    //Pack frames that have useful preferred
    //size info, e.g. from their layout
    if (packFrame)
    {
    frame.pack();
    }
    else
    {
    frame.validate();
    }
    //Center the window
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frameSize = frame.getSize();
    if (frameSize.height > screenSize.height)
    {
    frameSize.height = screenSize.height;
    }
    if (frameSize.width > screenSize.width)
    {
    frameSize.width = screenSize.width;
    }
    frame.setLocation((screenSize.width - frameSize.width) / 2,
    (screenSize.height - frameSize.height) / 2);
    frame.setVisible(true);
    }
    /**Main method*/
    public static void main(String[] args)
    {
    try
    {
    UIManager.setLookAndFeel(
    UIManager.getCrossPlatformLookAndFeelClassName());
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    new Run();
    }
    }
    Буду рад помощи, заранее благодарен;)
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей