Использование кнопок в графическом интерфейсе NetBeans
Хорошо, так что я довольно нуб в JAVA, и вообще программирую. Я пытаюсь сделать приложение "камень, бумага, ножницы" с графическим интерфейсом. То, что я пытаюсь сделать, - это самая простая вещь, о которой я подумал, нажмите кнопку по вашему выбору (r, p или s), и это сделает переменную, используемую в остальной части программы, для сравнения с выбором компьютера, поиска победителя. и т. д. У меня уже есть разработанная программа, проблема в графическом интерфейсе. Я использую NetBeans и JFrame, который является совершенно новым для меня. У меня много вопросов, и, может быть, есть хороший учебник для меня, на который кто-то может сослаться, но использование официального сайта netbeans пока мало чем помогло. В любом случае:
Я не уверен, куда поместить код основного метода, который будет в текстовой программе, создать новый класс или поместить его в основной метод фрейма, который я использую.
Из-за этого я даже не могу скомпилировать, потому что основная функция пытается использовать переменную, которую я хочу сделать в кнопке. Я думаю, что весь порядок операции мне неизвестен. Я посмотрел на примеры NetBeans и думаю, что мог бы сделать эту работу, сделав что-то немного более сложным, но это кажется ненужным?
3 ответа
Место, где можно начать вводить код, к которому вы привыкли, находится в каталоге с исходным кодом, который обычно называется новым проектом: YourFileName.java
Ключ заключается в том, чтобы искать имя, которое вы добавили в настройках в именах файлов в новом проекте.
Оказавшись в, есть несколько методов, которые запускают приложение для вас. А внизу находится main(), с которым мы с тобой наиболее знакомы:) .
...
@Override
protected void configureWindow(java.awt.Window root) {
}
/**
* A convenient static getter for the application instance.
* @return the instance of DesktopApplication1
*/
public static DesktopApplication1 getApplication() {
return Application.getInstance(DesktopApplication1.class);
}
/**
* Main method launching the application.
*/
public static void main(String[] args) {
launch(DesktopApplication1.class, args);
}
}
Лично я предпочитаю настольное приложение, потому что оно начинается с большого количества предварительно сгенерированного кода для вас.
Вот хорошее место, чтобы начать изучать Swing. Я бы предупредил вас, что использование NetBeans - это замечательно, если вы пытаетесь быстро запустить большой графический интерфейс, но может вызвать больше проблем, чем решить, если вы еще не знакомы с работой Swing.
Несколько советов из того, что я узнал о моих проектах:
- Подумайте, какой будет базовая модель программы, прежде чем начинать писать графический интерфейс. Например, возможно, вы бы использовали игровой класс, подобный псевдокоду:
Начать новую игру Получить выбор игрока Произвольно сгенерировать выбор для компьютера Сравните варианты если выбор игрока сильнее игрок выигрывает еще компьютер побеждает вернуть победителя
Использование шаблона Model-View-Controller - хорошее место для начала, когда у вас есть графический интерфейс для сборки. Это гарантирует, что есть разделение между компонентами вашей программы; если вам когда-либо понадобится изменить вид или модель, вы не сломаете другие компоненты.
На практике это обычно означает для Java то, что вы объединяете представление и контроллер, обычно расширяя JFrame, как указала qpingu. JFrame понадобится ссылка на класс вашей модели и панели, которые содержат различные элементы управления.
Вы хотите найти несколько статей и учебных пособий по Swing.
Вот немного кода, чтобы помочь вам:
// RockPaperScissors is the JFrame as well as the KeyListener.
// You could make another class to handle the key presses instead by doing:
// addKeyListener(new myOtherClass());
// So long as myOtherClass implements KeyListener
class RockPaperScissors extends JFrame implements KeyListener {
public RockPaperScissors() {
// Listen for any key presses.
addKeyListener(this);
}
public void keyPressed(KeyEvent e) {
// Figure out which key was pressed based on it's code.
// http://java.sun.com/j2se/1.4.2/docs/api/java/awt/event/KeyEvent.html
switch (e.getKeyCode()) {
case e.VK_R:
// Rock
break;
case e.VK_P:
// Paper
break;
case e.VK_S:
// Scissors
break;
}
}
// You can use these if you want, but we don't care about them.
public void keyReleased(KeyEvent e) { }
public void keyTyped(KeyEvent e) { }
}
void main() {
// Set up the GUI (which is just a JFrame!)
new RockPaperScissors();
// The main program can exit because the JFrame runs on it's own thread.
}