2 кнопки влияют на один и тот же ярлык - PullRequest
0 голосов
/ 02 марта 2019

Я новичок в Java и пытаюсь создать две кнопки, используя JFrame и ActionListener, которые будут отображать случайно сгенерированный массив в метке и сортировать указанный массив.Я нажал кнопку, которая будет отображать случайно сгенерированный массив, но у меня возникли проблемы с кнопкой, которая будет сортировать его.Есть ли способ получить доступ к массиву, созданному с помощью mybutton4 с помощью mybutton3, чтобы выполнить это?

Это то, что у меня есть для кнопки, которая отображает случайный массив из 10 чисел:

if(e.getActionCommand().equals("myButton4"))
{
    int[] Array = RandomArray.list();
    String strArray[] = Arrays.stream(Array).mapToObj(String::valueOf).toArray(String[]::new);
    label.setText("Array: ["+String.join(",", strArray)+"]");
}

Если я использую что-то похожее, но в button3, я могу получить его для выводаотсортированный массив, но мне нужна кнопка для сортировки массива, отображаемого после нажатия mybutton4.

Это мой код для кнопки сортировки (которая просто отображает отсортированный случайный массив):

if(e.getActionCommand().equals("myButton2"))
{
    int[] Array = RandomArray.list();
    Arrays.sort(Array);
    String strArray[] = Arrays.stream(Array).mapToObj(String::valueOf).toArray(String[]::new);
    label.setText("Array: ["+String.join(",", strArray)+"]");
}

Спасибо за ваши комментарии и помощь.

1 Ответ

0 голосов
/ 03 марта 2019

Определил переменную в классе как:

public int[] getArray;

И соответственно изменил операторы getActionCommand для каждой кнопки.Теперь он работает как положено.

if(e.getActionCommand().equals("myButton2"))
{
    int[] sortArray = getArray;
    Arrays.sort(sortArray);
    String strArray[] = Arrays.stream(sortArray).mapToObj(String::valueOf).toArray(String[]::new);
    label.setText("Array: ["+String.join(",", strArray)+"]");
}

if(e.getActionCommand().equals("myButton4"))
{
    getArray = RandomArray.list();
    String strArray[] = Arrays.stream(getArray).mapToObj(String::valueOf).toArray(String[]::new);
    label.setText("Array: ["+String.join(",", strArray)+"]");
}

Спасибо MadProgrammer за указание на мою оплошность.

...