Java, как я могу получить доступ к текстовому полю - PullRequest
0 голосов
/ 14 октября 2019

Я относительно новичок в программировании. Надеюсь, кто-то может помочь. У меня есть кнопка, которая создает серию меток и текстовых полей внутри фрейма, когда пользователь вводит число. У меня проблемы с доступом к текстовым полям после их создания. Может кто-нибудь направить меня в правильном направлении. Код ниже. Спасибо.

метод для создания метки и текстового поля.

public JTextField createPrizePanels(){
        JLabel prizePanel = new JLabel("Enter Prize Here", SwingConstants.CENTER);
        prizePanel.setVerticalAlignment(SwingConstants.TOP);
        prizePanel.setFont(new Font("Arial", Font.BOLD, 14));
        prizePanel.setForeground(Color.BLUE);
        Border border = BorderFactory.createLineBorder(Color.GRAY, 1);
        prizePanel.setBorder(border);
        prizePanel.setOpaque(true);
        prizePanel.setBackground(Color.LIGHT_GRAY);
        prizePanel.setBounds(setBoundsX, setBoundsY, 120, 60);

        prizeTextBox = new JTextField(50);
        prizeTextBox.setBounds(setBoundsX + 5, setBoundsY + 20, 110, 30);
        prizeTextBox.setFont(new Font("Arial", Font.BOLD, 12));
        prizeTextBox.setOpaque(true);
        prizeTextBox.setBackground(Color.WHITE);
        prizeTextBox.setForeground(Color.BLACK);
        prizeTextBox.setText("No Prize");
        prizeTextBox.setHorizontalAlignment(JTextField.CENTER);

        lp.add(prizePanel);
        lp.add(prizeTextBox); 

        return prizeTextBox;

    }

код, который создает несколько текстовых полей на основе ввода от пользователя.

JButton numberOfBallonsButton = new JButton("Set");
        numberOfBallonsButton.setBounds(360,160,95, 0x1e);
        numberOfBallonsButton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){ 
                numberOfBallons = Integer.parseInt(numberOfBallonsTextBox.getText());
                System.out.println(numberOfBallons);
                lp.remove(numberOfBallonsButton);

                for(int i = 0; i < numberOfBallons; i++ ){
                    createPrizePanels();
                    setBoundsX = setBoundsX +125;
                    if(setBoundsX > 450){
                        setBoundsX = 120;
                        setBoundsY = setBoundsY + 65;
                    }
                }
                lp.add(startGameButton);
            }
        });

До этогоДык, это работает нормально. Однако пользователю необходимо ввести текст в каждое текстовое поле и нажать другую кнопку. Я не уверен, как получить доступ к каждому текстовому полю. Заранее спасибо.

1 Ответ

0 голосов
/ 14 октября 2019

Вы используете локальные поля. Вы можете создать глобальное поле, и возвращаемое значение createPrizePanels () никогда не используется, и для вашего случая вы не знаете номер созданного текстового поля, поэтому вы можете использовать List как глобальное поле и при созданииtextfield добавить его в список, чтобы вы могли получить к нему доступ позже в любом месте

...