2017-09-20 5 views
0

私はJavaを使い慣れていて、コーディングしていますが、私は非常に素早く学習しています。私は実際にJFrameのボタンを学ぼうとしていましたが、私のボタンにプリントラインを期待する何かをさせることができません。誰かが「LMAO()」メソッドを実行するためのボタンを取得する方法を説明していただけます。別のクラスのメソッドの使い方

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(); 
    } 
} 

アイデアがうまくいけば、私は私の異なるプロジェクトのすべてのために偉大なハブにできるようになるポイントを取得することですこれは、より良い方法がない限り、一連のメソッドを使用できるようにするためです。

+1

'GameCenter2.Lmao()'動作しなければなりません。別のクラスで定義されているメソッドを呼び出そうとしています。メソッドが 'static'なのでクラス名を使うべきです。非静的メソッドの場合は、Objectを作成し、 'object.method()'のように使用する必要があります。 – Sridhar

答えて

0

別のクラスのstaticメソッドにアクセスしようとしています。

静的メソッドは、だから、

DefinedClassName.methodName(); 

、同じように呼び出す必要があり、あなたのケースでは、

GameCenter2.Lmao(); 

は動作するはずです。

非静的メソッドの場合は、Objectを作成し、object.method()と同様に使用する必要があります。

例、

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

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

コードに小さな改善、

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); 
} 
関連する問題