@Sterio23400
Начинающий разработчик Unity.

Как использовать неинициализированные переменные в методе кнопки?

Добрый день. Самостоятельно изучаю Java. В данный момент осваиваю графическую библиотеку. Возникла следующая проблема - у меня имеются 2 поля для ввода текста, в данном случае в них вписывается размерность двумерного массива. Затем по нажатии на кнопку массиву соответственно эта размерность присваивается, однако выдается ошибка в 32 строке (first_array = new Integer[Integer.parseInt(textField.getText())][Integer.parseInt(textField2.getText())];). Имеется ли способ использовать переменные в методе кнопки, чтобы потом в дальнейшем работать с их измененным значением?
package com.company;
import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

import java.awt.event.ItemEvent;
import java.awt.event.ActionEvent;
import java.awt.event.ItemListener;
import java.awt.event.ActionListener;
import javax.swing.JTable;

public class Main implements ActionListener{

    public static void main(String[] args)
    {
        JFrame frame = new JFrame("Первое окно");
        frame.setSize(600, 600);

        JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER));

        JLabel label = new JLabel("Введите длину и высоту двухмерного массива");
        JTextField textField = new JTextField(10);
        JTextField textField2 = new JTextField(10);

        Integer[][] first_array;

        JButton button1 = new JButton("Создать двумерный массив");
        button1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                first_array = new Integer[Integer.parseInt(textField.getText())][Integer.parseInt(textField2.getText())];
            }
        });

        frame.add(panel);

        frame.setVisible(true);
    }

    public void actionPerformed(ActionEvent e){ }
}
  • Вопрос задан
  • 39 просмотров
Пригласить эксперта
Ответы на вопрос 1
@WaterSmith
Android-разработчик. Java, Kotlin
Переменные конечно использовать можно. Жаль что вы не указали ошибку, которая у вас возникает.
Лучше так не пишите:
first_array = new Integer[Integer.parseInt(textField.getText())][Integer.parseInt(textField2.getText())];.

И сами путаетесь и другим читать тяжело, и при отладке куча проблем.
Так пишите:
int rowSize = Integer.parseInt(textField.getText());
int columnSize = Integer.parseInt(textField2.getText());
if (rowSize>0 && columnSize>0) {
    first_array = new Integer[rowSize][columnSize]; 
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы