Использование кнопок в графическом интерфейсе NetBeans

Хорошо, так что я довольно нуб в JAVA, и вообще программирую. Я пытаюсь сделать приложение "камень, бумага, ножницы" с графическим интерфейсом. То, что я пытаюсь сделать, - это самая простая вещь, о которой я подумал, нажмите кнопку по вашему выбору (r, p или s), и это сделает переменную, используемую в остальной части программы, для сравнения с выбором компьютера, поиска победителя. и т. д. У меня уже есть разработанная программа, проблема в графическом интерфейсе. Я использую NetBeans и JFrame, который является совершенно новым для меня. У меня много вопросов, и, может быть, есть хороший учебник для меня, на который кто-то может сослаться, но использование официального сайта netbeans пока мало чем помогло. В любом случае:

  1. Я не уверен, куда поместить код основного метода, который будет в текстовой программе, создать новый класс или поместить его в основной метод фрейма, который я использую.

  2. Из-за этого я даже не могу скомпилировать, потому что основная функция пытается использовать переменную, которую я хочу сделать в кнопке. Я думаю, что весь порядок операции мне неизвестен. Я посмотрел на примеры 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.
}
Другие вопросы по тегам