基本的に、JButton の 1 つをクリックするたびに、ロックアップします。調べてみると、無限ループが原因かもしれないことがわかりましたが、どこにも見当たりません。
新鮮な目はとても重宝します!
とにかく、宣言されているJButtonは次のとおりです。
public static JButton textYes = new JButton("Yes");
public static JButton textNo = new JButton("No");
ここに私の main() メソッドがあります:
public static void main(String[] args) throws IOException {
Greed gui = new Greed();
gui.launchFrame();
redirectSystemStreams();
Container contentPane = f.getContentPane();
contentPane.add(new Greed());
Scanner is = new Scanner(System.in);
System.out.println("Welcome to Greed...");
//do {
System.out.println("Would you like to play? (yes/no)");
area = "menu";
menu = is.next();
}
Start() メソッドは次のとおりです。
public static void start(String menu) {
switch (menu) {
case "yes":
jTextArea1.setText(null);
diceOne = 0;
diceTwo = 0;
diceThree = 0;
diceFour = 0;
diceFive = 0;
System.out.println("Rolling...");
Game();
break;
case "no":
System.out.println("Goodbye...");
System.exit(0);
break;
default:
invalidInput();
break;
}
}
JButton リスナーを使用した actionPerformed() メソッドは次のとおりです。
public void actionPerformed(ActionEvent e) {
//jTextArea1.setText(null);
if (box1.isSelected()) {
System.out.println("1 is selected");
willRerollDiceOne = true;
}
else {
//System.out.println("1 not selected");
willRerollDiceOne = false;
}
if (box2.isSelected()) {
System.out.println("2 is selected");
willRerollDiceTwo = true;
}
else {
//System.out.println("2 not selected");
willRerollDiceTwo = false;
}
if (box3.isSelected()) {
System.out.println("3 is selected");
willRerollDiceThree = true;
}
else {
//System.out.println("3 not selected");
willRerollDiceThree = false;
}
if (box4.isSelected()) {
System.out.println("4 is selected");
willRerollDiceFour = true;
}
else {
//System.out.println("4 not selected");
willRerollDiceFour = false;
}
if (box5.isSelected()) {
System.out.println("5 is selected");
willRerollDiceFive = true;
}
else {
//System.out.println("5 not selected");
willRerollDiceFive = false;
}
if ("menu".equals(area)) {
if(e.getSource() == textYes){
start("yes");
}
if(e.getSource() == textNo){
start("no");
}
}
if ("choiceReroll".equals(area)) {
if(e.getSource() == textYes){
choiceReroll = "yes";
}
if(e.getSource() == textNo){
choiceReroll = "no";
}
}
}
私はそれが何らかの形でJButtonsに接続されていると考えています。
さらにコードを表示する必要がある場合はお知らせください。
とにかく、どんな助けも大歓迎です!
ご協力いただき、ありがとうございました。
編集: 申し訳ありませんが、JBUttons にアタッチされているリスナーを表示するのを忘れていました:
textYes.addActionListener(this);
textNo.addActionListener(this);
編集:また、ここに Game() メソッドがあります:
public static void Game() {
rollDiceOne();
rollDiceTwo();
rollDiceThree();
rollDiceFour();
rollDiceFive();
displayDiceValues();
f.validate();
f.repaint();
choiceRerollDice();
}
そして rollDice# メソッド:
public static void rollDiceOne() {
diceOne = 1 + (int)(Math.random()*6);
}
public static void rollDiceTwo() {
diceTwo = 1 + (int)(Math.random()*6);
}
public static void rollDiceThree() {
diceThree = 1 + (int)(Math.random()*6);
}
public static void rollDiceFour() {
diceFour = 1 + (int)(Math.random()*6);
}
public static void rollDiceFive() {
diceFive = 1 + (int)(Math.random()*6);
}