использование кнопок в графическом интерфейсе NetBeans - PullRequest
1 голос
/ 16 марта 2009

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

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

  2. Из-за этого я даже не могу скомпилировать, потому что основная функция пытается использовать переменную, которую я хочу сделать в кнопке. Я думаю, что весь порядок операции мне неизвестен. Я посмотрел на примеры NetBeans и думаю, что мог бы сделать эту работу, сделав что-то немного более сложное, но это кажется ненужным?

Ответы [ 3 ]

1 голос
/ 10 мая 2009

Вот хорошее место, чтобы начать изучение Swing. Я бы предостерег вас, что использование NetBeans - это замечательно, если вы пытаетесь быстро запустить большой графический интерфейс, но может вызвать больше проблем, чем решить, если вы еще не знакомы с тем, как работает Swing.

Несколько советов из того, что я узнал о моих проектах:

  • Подумайте, какой будет базовая модель программы, прежде чем начинать писать графический интерфейс. Например, возможно, вы бы использовали такой игровой класс, как этот псевдокод:
Start a new game
   Get the player's choice
   Randomly generate a choice for the computer
   Compare the choices
      if the player's choice is stronger
         player wins
      else computer wins
   return the winner
  • Использование шаблона Model-View-Controller - хорошее место для начала, когда у вас есть графический интерфейс для сборки. Это обеспечивает разделение компонентов вашей программы; если вам когда-либо понадобится изменить вид или модель, вы не нарушите другие компоненты.

  • На практике это обычно означает для Java то, что вы объединяете представление и контроллер, обычно расширяя JFrame, как указала qpingu. JFrame понадобится ссылка на класс вашей модели и панели, которые содержат различные элементы управления.

1 голос
/ 19 января 2012

Место, где можно начать вводить код, к которому вы привыкли, находится в каталоге с исходным кодом, обычно называемым тем, что вы назвали новым проектом: 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);

    }
}

Лично я предпочитаю настольное приложение, потому что оно начинается с большого количества предварительно сгенерированного кода для вас.

0 голосов
/ 16 марта 2009

Вы хотите найти несколько статей и руководств по 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.
}
...