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