我有一个代码已经完成编码,但我意识到很难在代码中看到所以我想要做的是添加四个类,其中一个将用于Viewer,UserInput,Player和Controller。
所以我创建了一个类,它应该通过运行该类
来启动所有类 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的每个窗口中,但我只能让查看器工作。
查看者类
public class SSPViewer extends JFrame{
private JPanel resultatPanel;
private JLabel infoLabel, resultatLabel;
private JTextField UserResult, CompResult;
SSPViewer() {
super("SSPViewer");
setSize(600, 400);
UI();
}
public void UI() {
Container container = getContentPane();
resultatPanel = new JPanel(new GridLayout(2,2));
resultatPanel.setBackground(Color.WHITE);
UserResult = new JTextField(" Dina vinster: ");
resultatPanel.add(användarResultat);
CompResult= new JTextField(" Datorns vinster: ");
resultatPanel.add(datorResultat);
infoLabel = new JLabel("Börja spela genom att ", JLabel.RIGHT);
resultatPanel.add(infoLabel);
resultatLabel = new JLabel("använda knapparna längst ner!", JLabel.LEFT);
resultatPanel.add(resultatLabel);
container.add("Center",resultatPanel);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
UserInPut类
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;
}
}
}
所以我现在想知道为什么它不起作用。好像我做得对,但是......
如果有人可以使用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行作为评论一段时间,直到你完成所有课程。
答案 0 :(得分:0)
我已经完成并写了如何解决我以前遇到的问题(因为将来有人和我一样有麻烦)。但是还有另一个问题,现在包含if-else语句。 所以我有一个课程,可以让你选择SCiss,纸张和摇滚。其中哪些是他们自己的号码。
Rock = 0,Sciss = 1,Paper = 2.
我在其中一个课程中使用了这个,因为需要知道你在按什么按钮。
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 );
我想要做的是当你按下这三个按钮中的一个按钮时,它应该保存数字总和(选择),然后转到另一个类来制作其他功能,我的意思是:< / strong>
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");
}
}
}
我在考虑使用返回,所以我尝试了但是它没有让我任何前进。所以想法会很棒。也没有错误。