2017-09-20 1 views
0

Je suis novice en Java et en codage, mais j'apprends très rapidement. J'ai vraiment essayé d'apprendre les boutons JFrame, mais je n'arrive pas à faire en sorte que mon bouton fasse quoi que ce soit d'attendre des lignes d'impression. Quelqu'un peut-il s'il vous plaît expliquer comment obtenir le bouton pour exécuter la méthode « Lmao() »:Comment utiliser une méthode dans une autre classe

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import java.util.Scanner; 

public class GameCenter2 

{ 
    public static void Lmao() { 
     Scanner scan = new Scanner(System.in); 
     boolean run = true; 
     while (run) { 
      int random = (int) (Math.random() * 100); 
      System.out.println("Pick a number 1 - 100"); 
      int response = scan.nextInt(); 
      int difference = java.lang.Math.abs(response - random); 
      if (random == response) { 
       System.out.println("Congradulations, you win! The number was " + random); 
      } else { 
       System.out.println("WRONG! You were " + difference + " numbers off. The number was " + random + "."); 
      } 
      System.out.println("Would you like to play again? Yes or No."); 

      String response1; 
      response1 = scan.next(); 

      if (response1.equals("Yes")) { 
       run = true; 
      } else { 
       run = false; 
      } 
     } 
    } 

    public static void main(String[] args) { 
     Login(); 
     Button frm = new Button("GameCenter"); 

     frm.setSize(200, 100); 
     frm.setVisible(true); 

    } 
} 

class Button extends JFrame implements ActionListener { 
    boolean guess; 
    JButton bChange; // reference to the button object 

    // constructor for ButtonFrame2 
    Button(String title) { 
     super(title); // invoke the JFrame constructor 
     setLayout(new FlowLayout()); // set the layout manager 

     // construct a Button 
     bChange = new JButton("Guessing Game"); 

     // register the ButtonFrame2 object as the listener for the JButton. 
     bChange.addActionListener(this); 

     add(bChange); // add the button to the JFrame 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 

    public void actionPerformed(ActionEvent evt) { 
     Lmao(); 
    } 
} 

L'idée est de nous l'espérons arriver au point où je serai en mesure de grand hub pour tous mes différents projets , c'est pourquoi je veux être en mesure d'utiliser une série de méthodes à moins qu'il y ait une meilleure façon.

+1

'GameCenter2.Lmao()' devrait fonctionner. Vous essayez d'appeler une méthode définie dans une autre classe. Donc, vous devriez utiliser le nom de la classe car la méthode est 'static'. Si c'est une méthode non statique, vous devez créer un Object et l'utiliser comme 'object.method()'. – Sridhar

Répondre

0

Vous essayez d'accéder à une méthode static d'une autre classe.

Les méthodes statiques devraient être appelés comme,

DefinedClassName.methodName(); 

Ainsi, dans votre cas,

GameCenter2.Lmao(); 

devrait fonctionner.

S'il s'agit d'une méthode non statique, vous devez créer un objet et l'utiliser comme object.method().

Exemple,

class MyClass { 
    public void myMethod() { 
    // Do something 
    } 
} 

class MyMainClass { 
    public static void main(String[] args) { 
    MyClass object = new MyClass(); 
    object.myMethod(); 
    } 
} 

Une petite amélioration de votre code,

public static void Lmao() { 
    Scanner scan = new Scanner(System.in); 
    boolean isContinue = true; 
    do { 
     int random = (int)(Math.random() * 100); 
     System.out.println("Pick a number between 1 - 100"); 
     int response = scan.nextInt(); 
     int difference = java.lang.Math.abs(response - random); 
     if (random == response) { 
      System.out.println("Congradulations, you win! The number was " + random); 
     } else { 
      System.out.println("WRONG! You were " + difference + " numbers off. The number was " + random + "."); 
     } 

     System.out.println("Would you like to play again? Yes or No."); 

     isContinue = scan.next().trim().equalsIgnoreCase("Yes"); 
    } while(isContinue); 
}