В данной работе будем создавать интерфейс пользователя «вручную», т. е. без использования конструктора форм.
Создайте новый проект: простое приложение Java. Имя главного класса назовите Tetris пакет tetris.
После создания проекта необходимо сделать наш главный класс «наследником» класса JFrame, который описывает окно программы.
public class Tetris extends JFrame {
…
}
Таким образом наше консольное приложение превращается в программу с графическим интерфейсом.
Добавим в класс переменную уровня класса типа javax.swing.Timer с именем timer.
Далее создадим конструктор главного класса со строковым параметром:
Tetris(String s) {
super(s);
timer = new Timer(400, null); //создаем таймер
//сюда в будущем будет добавлен код,
//добавляющий элементы управления
setSize(300, 300);
setVisible(true);
}
И изменим метод main():
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {}
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
JFrame frame = new Tetris("Тетрис");
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
});
}
Запустите программу и посмотрите, что у вас получилось.
|
|
Следующим шагом добавим меню. Меню будет состоять из меню «Файл» и иметь пункты меню «Новая игра» и «Выход».
Для этого:
//добавляем объект «строка меню»,
JMenuBar mbar = new JmenuBar();
//создаем меню «Файл»
JMenu mm = new Jmenu("Файл");
//создаем пункты меню
JMenuItem mNewGame = new JMenuItem("Новая игра");
JMenuItem mExit = new JmenuItem("Выход");
//добавляем пункты в меню
mm.add(mNewGame);
mm.add(new Jseparator()); //разделитель
mm.add(mExit);
//добавляем меню в строку меню
mbar.add(mm);
//устанавливаем полученное меню на форму
setJMenuBar(mbar);
//добавляем обработчики выбора пунктов меню
//для «Выход»
mExit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {timer.stop(); dispose(); }
});
//для «Новая игра»
mNewGame.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//startNewGame();
}
});
Добавьте этот код в конструктор перед вызовом setSize(). Запустите программу. Как работает меню?