如何让这个类调用另一个类

时间:2014-01-20 21:55:52

标签: java swing awt paint

好的我有2节课 这是我的主要类,它打开一个JFrame并将一些东西绘制到JFrame:

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;

public class MainWindow extends Canvas{

  public static int HEIGHT = 600;
  public static int WIDTH = 600;

  public static void main(String[] args){
    MainWindow Window = new MainWindow();
    JFrame Frame = new JFrame();
    Frame.add(Window);
    Frame.pack();
    Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Frame.setVisible(true);
    Frame.setSize(WIDTH, HEIGHT);
    Frame.setLocationRelativeTo(null);
    Frame.setResizable(false);
    Frame.setTitle("Untitled Build 0.01");
  }
  public void paint(Graphics g){
    g.setColor(Color.BLACK);
    g.fillRect(0, 0, WIDTH, HEIGHT);
    g.setColor(Color.GRAY);
    g.drawString("Sellect A Difficulty", 100, 25);
    g.drawString("Please input a number from 1 - 3", 100, 40);
    g.drawString("1. Easy", 100, 55);
    g.drawString("2. Medium", 100, 70);
    g.drawString("3. Hard", 100, 85);
    g.setColor(Color.BLACK);
  }
}

这是我的第二课,它用于设置游戏的难度,但我需要主类来调用它,但我不知道如何让它做到这一点。

  public class Difficulty {
public static final int input = 0;
static int NoInput = 1;
public static int Difficulty = 0;

@SuppressWarnings("unused")
public static void main(String[] args){
    if(NoInput == 1){
        //draw text to screen here
        //TODO Write text to screen here about selecting difficulty
        Difficulty = Keyboard.readInt();
        if(input == 1){
            Difficulty = 1;
        }else if(input == 2){
            Difficulty = 2;
        }else if(input == 3){
            Difficulty = 3;
        }else if(input < 0 | input > 3){
            //TODO draw "please input a number between 1 and 3 try again...." to screen
        }
    }
  }
}

3 个答案:

答案 0 :(得分:2)

你的第二堂课只不过是一个带有一个静态主方法的程序,这是行不通的。建议:

  • 删除第二个类并将其重写为真正符合OOP的类,其中包含非静态字段,方法,构造函数,setter等。
  • 然后第一个类可以有第二个对象,并根据需要调用它的方法。
  • 第二个类也需要是一个非控制台GUI类,可能是生成JOptionPane的类。
  • 您的GUI类不应该混合AWT和Swing组件,而应该只有Swing组件。
  • 阅读教程“使用秋千绘画”,了解如何改善您的绘画。

答案 1 :(得分:2)

为什么你有两个主要空隙?您应该为难度类使用构造函数。 将所有代码放入如下方法中:

public Difficulty() {
   //All your code here
}

您可以通过创建此类的新实例来调用此方法。

Difficulty object = new Difficulty();

创建对象时将自动调用构造函数。

答案 2 :(得分:2)

Hovercraft Full Of Eels(漂亮的名字顺便说一下)已经回答了这个问题,但无论如何我还要补充2美分:P

第二个类使用public static void main(String [] args)这意味着它将单独运行。

快速修复可能是为该类创建构造函数,然后通过对象调用它。

public class Difficulty {
    public Difficulty(){
        // Code here
    }
}

致电:

Difficulty difficulty = new Difficulty();

这将在创建对象后立即调用构造函数,从而在您选择时执行代码。