Я работаю над экспериментом «игра в кости», поскольку я полный новичок, и, похоже, я многому учусь. Но я застрял в этом одном месте и не могу найти никакой помощи.Как подключить несколько кнопок для изменения одной переменной в алгоритме?
У меня есть генератор случайных чисел, где я могу отредактировать количество «сторон», которые умереть умереть с пользователем, вручную вменяющим цифры. Я хотел бы, чтобы пользователь мог нажать одну из кнопок, которые я добавил, и получить вычисленный случайный результат в нижней части экрана. Я не уверен, как это сделать, поэтому я хотел бы получить некоторое представление, даже если это всего лишь одна строка.
Также, пожалуйста, скажите мне, есть ли что-либо, что я делаю неправильно в любом случае, я действительно ДЕЙСТВИТЕЛЬНО новичок в этом и могу использовать какую-то помощь!
Вот мой код:
import java.util.Scanner;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import java.applet.Applet;
public class randtest6t extends Applet
{
public static void main(String[] args)
{
int dieSides;
Scanner keyboard = new Scanner(System.in);
System.out.print("How many sides does the die need to be?");
dieSides = keyboard.nextInt();
int random = (int)(Math.random() * dieSides + 1);
System.out.println("You rolled a " + random + ".");
//NAMING BUTTONS
JButton button2 = new JButton("2");
JButton button4 = new JButton("4");
JButton button6 = new JButton("6");
JButton button8 = new JButton("8");
JButton button10 = new JButton("10");
JButton button12 = new JButton("12");
JButton button20 = new JButton("20");
JButton button50 = new JButton("50");
JButton button100 = new JButton("100");
//LABELS
JLabel sides = new JLabel("How many sides does the die need to be?");
JLabel text = new JLabel("Your roll =");
JLabel output = new JLabel(" " + random);
output.setFont(new Font("Serif", Font.PLAIN, 56));
text.setFont(new Font("Serif", Font.PLAIN, 20));
sides.setFont(new Font("Serif", Font.PLAIN, 20));
//NAMING PANELS
JPanel buttonpanel = new JPanel(new GridLayout(3,3));
JPanel outputpanel = new JPanel(new GridLayout(2,2));
//CONNECTING BUTTONS/TEXT/PANELS
outputpanel.add(text);
outputpanel.add(output);
buttonpanel.add(button2);
buttonpanel.add(button4);
buttonpanel.add(button6);
buttonpanel.add(button8);
buttonpanel.add(button10);
buttonpanel.add(button12);
buttonpanel.add(button20);
buttonpanel.add(button50);
buttonpanel.add(button100);
JFrame diceFrame = new JFrame("Dice Roll");
diceFrame.add(sides, BorderLayout.NORTH);
diceFrame.add(outputpanel, BorderLayout.SOUTH);
diceFrame.add(buttonpanel, BorderLayout.CENTER);
diceFrame.setSize(500,500);
diceFrame.setVisible(true);
diceFrame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}
Извините, если я отформатирован неправильно или что-нибудь, я бы очень ценю вашу помощь!
Кроме того, чтобы быть ясно, что я хочу, чтобы это произошло так:
- button2 нажимается
- dieSides = 2
- INT случайная = (INT) (Math.random() * dieSides + 1);
- Показать результат на JFrame
Проблемы я имею что я не могу dieSides зависеть от кнопки, нажатая.
Вы можете использовать каждую кнопку для вызова метода, который принимает количество сторон в качестве параметра. Таким образом, каждая кнопка может вызвать тот же метод, но указать количество сторон. – gla3dr
У вас должен быть обработчик событий для каждой кнопки и переназначить значение для вывода и обновить окно, чтобы оно отображалось –