Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 随机数发生器jframe_Java_Eclipse - Fatal编程技术网

Java 随机数发生器jframe

Java 随机数发生器jframe,java,eclipse,Java,Eclipse,正在为一位想要随机数生成器的教授做一个附带项目 该计划在目前的状态下还有很多不尽如人意之处,但我认为我走在了正确的轨道上。然而,当涉及到使用文本字段,将数据传递到我的随机数方程,并显示它时,我被卡住了。基本上,程序不会等待用户输入文本字段 我们在学校从来没有通过OOP,所以我需要拿出大炮(你们这些家伙) 以下是我目前正在处理的问题。最后一点是我有争议的部分 package RandomButton; import java.awt.BorderLayout; impor

正在为一位想要随机数生成器的教授做一个附带项目

该计划在目前的状态下还有很多不尽如人意之处,但我认为我走在了正确的轨道上。然而,当涉及到使用文本字段,将数据传递到我的随机数方程,并显示它时,我被卡住了。基本上,程序不会等待用户输入文本字段

我们在学校从来没有通过OOP,所以我需要拿出大炮(你们这些家伙)

以下是我目前正在处理的问题。最后一点是我有争议的部分

    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);
        }
    }

您需要的是添加一个,请参见

代码的简单修改,无需更大的讨论,就是将模拟随机数的代码上移

    //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);
          } 
        } );

您可能需要一些事件处理程序,jtextfield不会延迟您的代码或诸如此类的事情,它只是添加字段。您需要一个事件侦听器。您可以在Oracle文档中找到示例