Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使这两个文件成为一个功能程序_Java_File_Class_User Interface - Fatal编程技术网

Java 如何使这两个文件成为一个功能程序

Java 如何使这两个文件成为一个功能程序,java,file,class,user-interface,Java,File,Class,User Interface,我的教授告诉我把这两个放在一起做一个运行程序。我正在使用Netbeans,它一直告诉我没有主类。我应该创造一个,还是我遗漏了什么?如何将这些组合到一个工作的gui java应用程序中 这是第一个文件,它叫做NumberGame import java.util.Random; public class NumberGame { private Random rand = new Random(); private int min, max; private int nu

我的教授告诉我把这两个放在一起做一个运行程序。我正在使用Netbeans,它一直告诉我没有主类。我应该创造一个,还是我遗漏了什么?如何将这些组合到一个工作的gui java应用程序中

这是第一个文件,它叫做NumberGame

import java.util.Random;

public class NumberGame {
    private Random rand = new Random();
    private int min, max;
    private int num1, num2;

    public NumberGame(int min, int max) {
        this.min = min;
        this.max = max;
        newNums();
    }

    public int getNum1() {
        return num1;
    }

    public int getNum2() {
        return num2;
    }

    public void newNums() {
        num1 = rand.nextInt(max - min + 1) + min;
        num2 = rand.nextInt(max - min + 1) + min;
    }

    public int calcSum() {
        return num1 + num2;
    }

    public boolean checkSum(int num) {
        return num == calcSum();
    }
}
第二个文件在这里称为App

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class App extends JFrame implements ActionListener {
    /* Canvas ============================================ */
    private NumberGame numbers;
    private Font mainFont = new Font(Font.SANS_SERIF, Font.PLAIN,16);

    /* Components for Canvas ============================= */
    private JTextField messageField;
    private JLabel lblNum1;
    private JLabel lblNum2;
    private JTextField sumField;
    private JButton btnNext;
    private JButton btnCheck;


    public App(String title, int width, int height) {
        // initialize new number game
        numbers = new NumberGame(10, 49);

        // initialize components
        messageField = new JTextField("", 10);
        messageField.setEditable(false);
        messageField.setHorizontalAlignment(JTextField.CENTER);
        messageField.setFont(mainFont);

        // add components to board
        add(messageField, BorderLayout.NORTH);
        add(createCenter(), BorderLayout.CENTER);
        add(createButtonPanel(), BorderLayout.SOUTH);

        // add action listeners
        btnCheck.addActionListener(this);
        btnNext.addActionListener(this);
        sumField.addActionListener(this);

        // create the window
        createWindow(title, width, height);
        pack();
    }

    private void createWindow(String title, int width, int height) {
        setVisible(true);
        setTitle(title);
        setSize(width, height);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    private JPanel createCenter() {
        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(3, 2));

        JLabel lblNumPrompt1 = new JLabel("Number 1 = ", JLabel.RIGHT);
        lblNumPrompt1.setFont(mainFont);
        lblNum1 = new JLabel(Integer.toString(numbers.getNum1()), JLabel.CENTER);
        lblNum1.setFont(mainFont);

        JLabel lblNumPrompt2 = new JLabel("Number 2 = ", JLabel.RIGHT);
        lblNumPrompt2.setFont(mainFont);
        lblNum2 = new JLabel(Integer.toString(numbers.getNum2()), JLabel.CENTER);
        lblNum2.setFont(mainFont);

        JLabel lblSumPrompt = new JLabel("Sum = ", JLabel.RIGHT);
        lblSumPrompt.setFont(mainFont);
        sumField = new JTextField("0", 10);
        sumField.setHorizontalAlignment(JTextField.CENTER);
        sumField.setFont(mainFont);

        // add objects to the panel
        panel.add(lblNumPrompt1);
        panel.add(lblNum1);
        panel.add(lblNumPrompt2);
        panel.add(lblNum2);
        panel.add(lblSumPrompt);
        panel.add(sumField);

        return panel;
    }

    private JPanel createButtonPanel() {
        JPanel panel = new JPanel();

        btnNext = new JButton("Next");
        btnCheck = new JButton("Check");

        panel.add(btnNext);
        panel.add(btnCheck);

        return panel;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        JButton button = (JButton) e.getSource();

        if (button.equals(btnNext)) {
            numbers.newNums();
            lblNum1.setText(Integer.toString(numbers.getNum1()));
            lblNum2.setText(Integer.toString(numbers.getNum2()));
        } else {
            int num = Integer.parseInt(sumField.getText());

            if (numbers.checkSum(num))
                messageField.setText("Correct!");
            else
                messageField.setText("Try Again!");
        }
    }
}

只需创建一个主类并初始化app类,如下所示,HTH

public static void main(String args[])
{
   //Put in the title and size of the Panel
   App app1 = new App("MY game", 1000, 900);
}
  • 创建一个main
  • 将所有3个类放入相同的包中
  • 只需在main类中创建App类的对象
  • 运行
    是的,您需要一个带有main函数的类来初始化swing线程中的gui。是的,您应该创建一个
    main
    类。这是“制作一个运行程序”任务的一部分。我真的很感激你的投入