简体   繁体   中英

random number generator jframe

Working on a side project for a professor that wants a random number generator.

The program in its current state leaves a lot to be desired but I think I'm on the right track. However, I am stuck when it comes to using the text field, passing that data to my random number equation, and displaying it. Basically, the program isn't waiting for the user input to the text field.

We never made it past OOP in school so I need to pull out the big guns (you guys).

Here is what I am working with currently. The last bit at the end is the part that I am having issue with.

    package RandomButton;

    import java.awt.BorderLayout;
    import java.awt.EventQueue;
    import java.util.Random;
    import java.util.Scanner;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
    import javax.swing.JButton;
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;

    import javax.swing.JTextField;
    import javax.swing.SwingConstants;
    import javax.swing.JLabel;

    public class GUI extends JFrame {

        private JPanel contentPane;
        private JTextField textField;
        private JTextField ClassSize;
        private JLabel label;
        private JTextField textField_1;

        /**
         * Launch the application.
         */
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    try {
                        GUI frame = new GUI();
                        frame.setVisible(true);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }

        /**
         * Create the frame.
         */
        public GUI() {
            int x;
            int max;
            String strMax;
            String strX;
            Scanner kb = new Scanner(System.in);

            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setBounds(100, 100, 450, 300);
            contentPane = new JPanel();
            contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
            setContentPane(contentPane);
            contentPane.setLayout(null);

            //Text field code
            textField = new JTextField();
            textField.setText("1");
            textField.setHorizontalAlignment(SwingConstants.CENTER);
            textField.setBounds(10, 143, 414, 35);
            contentPane.add(textField);
            textField.setColumns(10);

            //Randomize button code
            JButton btnNewButton = new JButton("Randomize!");
            btnNewButton.setFont(new Font("Tahoma", Font.BOLD, 40));
            btnNewButton.setBounds(10, 196, 414, 54);
            contentPane.add(btnNewButton);

            //Label code
            label = new JLabel();
            label.setFont(new Font("Tahoma", Font.PLAIN, 70));
            label.setHorizontalAlignment(SwingConstants.CENTER);
            label.setBounds(10, 11, 414, 103);
            contentPane.add(label);

            //math code
            Random num = new Random();
            strMax = textField.getText();
            max = Integer.parseInt(strMax);
            x = num.nextInt(max) + 1;
            strX = String.valueOf(x);
            label.setText(strX);
        }
    }

What you need is to add an ActionListener , see javadoc here

Simple modification of the code, without bigger discussion, is to move up the code that simulate random numbers...

    //Randomize button code
    JButton btnNewButton = new JButton("Randomize!");
    btnNewButton.setFont(new Font("Tahoma", Font.BOLD, 40));
    btnNewButton.setBounds(10, 196, 414, 54);
    contentPane.add(btnNewButton);

    // the listener
    btnNewButton.addActionListener(new ActionListener() { 
          public void actionPerformed(ActionEvent e) { 
                Random num = new Random();
                String strMax = textField.getText();
                int max = Integer.parseInt(strMax);
                int x = num.nextInt(max) + 1;
                String strX = String.valueOf(x);
                label.setText(strX);
          } 
        } );

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM