我需要将一个按钮分配给一个随机按键,导致一个按钮消失,并再次使用随机分配的按键重新出现另一个按钮。
这是我到目前为止所做的:
这是我的游戏开始:
package code;
import javax.swing.JFrame;
import javax.swing.*;
public class Game implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
JFrame frame = new JFrame ("Game");
frame.setVisible(true);
frame.setSize(500,200);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
frame.add(panel);
JButton button = new JButton("Start The Game");
panel.add(button);
button.addActionListener (new StartButton(frame));
}
}
这是我的按钮布局,它是1x4:
package code;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.AbstractButton;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class StartButton implements ActionListener {
private JFrame _j;
public StartButton(JFrame frame){
_j = frame;
}
public void actionPerformed (ActionEvent e) {
JFrame frame2 = new JFrame("ABC");
frame2.setVisible(true);
frame2.setSize(600,600);
frame2.setLocationRelativeTo(null);
JLabel label = new JLabel("Game");
JPanel panel = new JPanel();
frame2.add(panel);
panel.add(label);
_j.setVisible(false); //This creates a new game frame
GridLayout experimentLayout = new GridLayout(0,1);
frame2.setLayout(experimentLayout);
frame2.add(new JButton(""));
frame2.add(new JButton(""));
frame2.add(new JButton(""));
frame2.add(new JButton(""));
}
}
我应该给按钮自己的变量吗?如何显示随机键,按下它会删除该键,然后出现一个新按钮?
答案 0 :(得分:1)
你需要两件事。
对于保存随机键的变量,我建议将所有可能的按键放入一个数组中,然后使用随机生成的数字从数组中选择。
KeyListener只需要检查按下的键是否是正确的键,如果是,那么它需要在屏幕上的某处创建一个新的JButton并分配一个新的随机键击(根据我对该数组的建议) )。
每次按下正确的随机键时创建的JButton应该放入一个变量中(因为你只需要其中一个),每次你只需创建一个新的JButton并将它放在变量中。然而,更有效的方法是简单地改变单个JButton位置,这样您就不必每次都创建一个新对象。
可以使用KeyEvent类将击键放入变量中。例如,如果空格键被按下,则if (randomKey == KeyEvent.VK_SPACE)
为真。