Java 如何将一个代码添加到四个类中?

Java 如何将一个代码添加到四个类中?,java,class,Java,Class,我有一个代码,这是做编码,但我意识到它很难在代码中看到,所以我想做的是添加四个类,其中一个将是观众,用户输入,播放器和控制器 观众可以看到游戏信息,这是JPanel最重要的部分 UserInput允许用户使用按钮选择选项。 播放器是计算机信息将用于CPU功能的地方 控制器是所有数学运算的地方,按下新游戏按钮时重新启动新游戏,获得分数等等。 因此,我创建了一个类,在这个类中,它应该通过运行该类来启动所有类 SSPPlayer player = new SSPPlayer()

我有一个代码,这是做编码,但我意识到它很难在代码中看到,所以我想做的是添加四个类,其中一个将是观众,用户输入,播放器和控制器

观众可以看到游戏信息,这是JPanel最重要的部分 UserInput允许用户使用按钮选择选项。 播放器是计算机信息将用于CPU功能的地方 控制器是所有数学运算的地方,按下新游戏按钮时重新启动新游戏,获得分数等等。 因此,我创建了一个类,在这个类中,它应该通过运行该类来启动所有类

            SSPPlayer player = new SSPPlayer();
            SSPViewer viewer = new SSPViewer();
            SSPController controller = new SSPController();
            SSPUserInput userInput = new SSPUserInput();

            JFrame frame1 = new JFrame( "SSPViewer" );
            frame1.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
            frame1.add( viewer );
            frame1.pack();
            frame1.setVisible( true );

            JFrame frame2 = new JFrame( "SSPUserInput" );
            frame2.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
            frame2.add( userInput );
            frame2.pack(); frame2.setVisible( true );
        }
    }
然而,现在的问题是,到目前为止,我已经创建了两个类,它们应该在每个窗口中为Viewer和UserInput创建,但我只能让Viewer工作

查看器类

用户输入类

所以我现在想知道为什么它不起作用。看起来我做得对,但是

如果有人可以使用teamviewer或skype,我和你也会更容易

编辑:如果代码中有您不理解的内容。评论一下

我收到的错误如下:

Exception in thread "main" java.lang.IllegalArgumentException: adding a window to a container
    at java.awt.Container.checkNotAWindow(Unknown Source)
    at java.awt.Container.addImpl(Unknown Source)
    at java.awt.Container.add(Unknown Source)
    at javax.swing.JFrame.addImpl(Unknown Source)
    at java.awt.Container.add(Unknown Source)
    at Redovisning3.Test.main(Test.java:15)
解决了这个问题。要解决我以前遇到的这个问题,只需让第15行和第22行作为注释,直到您完成所有课程。

我已经完成并写下了如何解决我以前遇到的问题,以防将来有人遇到与我相同的问题。然而,还有另一个问题,它现在包含if-else语句。 所以我有一门课,可以让你选择石头,纸张和石头。哪一个有自己的号码

岩石=0,岩石=1,纸张=2

我在一个类中使用了这个,因为它需要知道你按下的是什么按钮

我想做的是,当你按下这三个按钮中的一个时,它应该将数字保存在sumchoice中,然后转到另一个类来生成其他函数,我的意思是:


我在考虑使用return,所以我尝试了一下,但没有让我有任何进步。因此,想法将是伟大的。也没有错误。

它不工作基本上没有意义。会发生什么?你有错误吗?如果是这样的话,运行它时是否会出现编译错误或异常?错误是什么?你的代码也使用了一个对象användarPanel,它似乎是凭空出现的。我很抱歉这样,我只是有点沮丧,但无论如何,我试图将所有代码从瑞典语翻译成英语,所以可能有一些代码没有翻译,但无论如何。所发生的是,从查看器弹出的窗口没有任何问题,但用户输入没有问题。像7-8个错误等。在java.awt.Container.checkNotAWindowUnknown Source在java.awt.Container.addImplUnknown Source可能您有skype或teamviewer,我也会更容易为您解释@GimbyDon't comment,在问题中添加缺少的信息。不要描述错误,张贴准确的错误。不要要求私人聊天,这不是怎么回事。哦,好吧,Gimby,我是新来的,所以你告诉我这件事太好了。我从来不知道。不管怎么说,我刚刚发布了问题中的所有内容。堆栈跟踪非常清楚地标识了Test.java中的第15行,那么为什么您没有向我们展示Test.java中的第15行呢?此外,如果你到达一个新的地方,这是常见的礼仪,以新的堆栈溢出?参加2分钟的旅行。。
public class SSPUserInput extends JFrame implements ActionListener {
    final int ROCK = 0, Sciss = 1, Paper= 2;


    private JButton Rock; 
    private JButton Scoss;  
    private JButton Paper; 
    private JButton newgame, exit;
    private JPanel  UserPanel, UserPanel1;

    SSPUserInput() {
        super("SSPUserInput");
        setSize(800 , 600);
        UI1();
    }
    public void UI1() {
        Container container = getContentPane();  

        UserPanel= new JPanel();
        UserPanel.setLayout(new GridLayout(0,4));
        UserPanel.add(new JLabel("Du väljer här:", JLabel.CENTER));
        Rock = new JButton("Rock");
        Sciss  = new JButton("Sciss");
        PAper = new JButton("Paper");

        Rock.addActionListener(this);
        Sciss.addActionListener(this);
        Paper.addActionListener(this);

        UserPanel.add(rock); 
        UserPanel.add(Sciss); 
        UserPanel.add(Paper);

        container.add("South", userpanel);

        UserPanel1= new JPanel();

        newgame= new JButton("New Game");
        exit= new JButton("Exit");
        exit.addActionListener(this);
        UserPanel1.add(exit);
        newgame.addActionListener(this);
        UserPanel1.add(newgame);
        container.add("North", UserPanel1);
    }

    public void actionPerformed(ActionEvent e) {
        int val = 0;

        if(e.getSource() == exit) {

            System.exit(0); 
        }
        else if(e.getSource() == newgame) {

        }
        else if (e.getSource() == Rock) {
            val = Rock;       
        }
        else if (e.getSource() == Sciss) {
            val = Sciss;
        }
        else {
            val = Paper; 
        }


    }

}
Exception in thread "main" java.lang.IllegalArgumentException: adding a window to a container
    at java.awt.Container.checkNotAWindow(Unknown Source)
    at java.awt.Container.addImpl(Unknown Source)
    at java.awt.Container.add(Unknown Source)
    at javax.swing.JFrame.addImpl(Unknown Source)
    at java.awt.Container.add(Unknown Source)
    at Redovisning3.Test.main(Test.java:15)
public void actionPerformed(ActionEvent e) {
    int val = 0  ;

    if(e.getSource() == exit) {

        System.exit(0); 
    }
    else if(e.getSource() == Newgame) {
       //Nothing here yet.
    }
    else if (e.getSource() == Rock) {
        choice = Rock;       
    }
    else if (e.getSource() == Sciss) {
        choice = Sciss;
    }
    else {
        choice = Paper; 
    }
    Sum(choice );
 public void berakna(int val){
        Userchoice = choice ;     
        Compchoice = (int)(Math.random() * 3);
        resultatLabel.setHorizontalAlignment(0); 
        infoLabel.setHorizontalAlignment(0);   
        infoLabel.setText("Result round" + ++round +":");   

        if (Userchoice == Compchoice )
            resultatLabel.setText("Tie!!");   
        else if (Userchoice == Rock &&  Compchoice == Sciss|| 
                Userchoice == Sciss &&  Compchoice == Paper ||
                Userchoice == Paper &&  Compchoice == Rock ) {
            resultLabel.setText("You win! One more time?");
            UserResult.setText(" You won: " + ++UserWin + "pcs");
        }
        else { 
            result.setText(" You lose, Try one more time!");
            CompResult.setText(" Comp won: " + ++CompWin+ "st");
        }
    }
}