我正在自学Java,我想创建一个带有GUI的摇滚,纸张,剪刀游戏。我用扫描仪创建了一个基于文本的版本,但我还有很多工作要做。
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.ButtonGroup;
public class RPS extends JFrame {
JRadioButton rock, paper, scissors;
ButtonGroup choices;
public static void main(String[] args) {
new RPS();
}
public RPS() {
super("Rock, Paper, Scissors");
setSize(400,300);
setResizable(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel p=new JPanel();
rock = new JRadioButton("Rock");
paper = new JRadioButton("Paper");
scissors = new JRadioButton("Scissors");
choices = new ButtonGroup();
choices.add(rock);
choices.add(paper);
choices.add(scissors);
p.add(rock);
p.add(paper);
p.add(scissors);
add(p);
setVisible(true);
}
}
这是我的代码。我已经创建了一个窗口并显示3个单选按钮,只允许选择一个选项。从这里开始,我想实现一个下一个按钮,并创建逻辑以根据两个选项产生答案。我相信我需要卡片布局,但Oracle文档对我没有帮助。我也不知道如何绕过实现逻辑。任何帮助表示赞赏,对于长篇文章感到抱歉。 再次感谢!
对不起,我没说清楚,我想为一个人设计一个转弯,按下巢按钮,然后第二个人转弯,按完成并获得结果。我将把它呈现给我的8年级课程。
答案 0 :(得分:2)
在您的计划中实施CardLayout
非常热门。此布局的目的是分层组件。在您的情况下,您需要为每个玩家提供一个面板。所以你需要两个面板。
以上两个是Card(layered)Layout
的组成部分(你可以将一个堆叠在另一个之上。
总而言之,你的布局应该是这样的
Wrapped in JPanel(new BoderLayout())
-------------------------------------
| label to show status | BorderLayout.NORTH
-------------------------------------
| |
| CardLayout holding |
| two JPanels with RBs | BorderLayout.CENTER
|___________________________________|
|(JPanel) Next JButton | BorderLayout.SOUTH
-------------------------------------
当您点击下一个按钮时,您可以调用next()
的{{1}}方法来显示下一个面板
实施例
CardLayout
有关其他移动方法,请参阅CardLayout docs
对于逻辑部分
实施例
private CardLayout cardLayout = new CardLayout(10, 10); // hgap and vgap args
private JPanel cardPanel = new JPanel(cardLayout);
JPanel panel1 = new JPanel(); // holds first player
JPanel panel2 = new JPanel(); // holds second player
cardPanel.add(panel1);
cardPanel.add(panel2);
nextButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
cardLayout.next(cardPanel);
}
});