Как использовать JMenuItems для отображения целых чисел в отдельных строках в JTextArea? - PullRequest
0 голосов
/ 05 июня 2019

Я использую JMenu (с именем Count) с четырьмя JMenuItems (с именами Inc, Dec, Reset, Quit).Когда я нажимаю на любой из пунктов меню, я хочу, чтобы он отображал целое число в JTextArea.Например, каждый раз, когда я нажимаю на Inc, должны отображаться целые числа, перечисленные по вертикали, начиная с 0. В данный момент проблема заключается в том, что, когда я нажимаю пункт меню Dec, он не берет последний номер в списке.

Я пытался использоватьметод getText, но я продолжаю получать NumberFormatException и говорю, что входная строка представляет собой набор чисел, например:

0
1
2
3
4

Из того, что я могу сказать, я знаю, что мне нужно иметь возможность отслеживатьпоследний номер таким образом, чтобы все пункты меню (кроме пункта меню выхода) могли получить к нему доступ и изменить его.Я просто понятия не имею, как это сделать.

Вот один из способов, которые я пробовал, где он дает мне ошибку, о которой я упоминал выше.

//newLine = "\n";

public void actionPerformed(ActionEvent ae) {

      String ac = ae.getActionCommand();

         if(ac.equals("Inc")) {    

            jta.append(count + newLine);
            count++; 

         }
         else if(ac.equals("Dec")) {

            count = Integer.parseInt(jta.getText());
            countText = Integer.toString(count); 
            jta.append(countText + newLine);
            count--;

         }
         else if(ac.equals("Reset")) {

            jta.selectAll();
            jta.replaceSelection("0");   
            count = 0;

         }
         else if(ac.equals("Quit")) {

            System.exit(0);

         }

}

Я ожидал

0
1
2
3
4
3
2
1

для отображения в TextArea, когда я нажимаю Inc и Dec

Но вместо этого просто

0
1
2
3
4

, а затем я получаю NumberFormatException о том, чтовходная строка:

0
1
2
3
4

Если возможно, я бы хотел, чтобы входная строка была просто последним целым числом в текстовой области.

Надеюсь, это имеет смысл.Я впервые пишу о стеке в потоке.

1 Ответ

1 голос
/ 05 июня 2019

Когда вы получаете текст, он возвращает «0 1 2 3 4», который не может быть проанализирован как целое число, поэтому исключение.Если вы хотите получить последнее целое число в текстовом поле, вам нужно извлечь текст и найти подстроку, которая представляет последнее целое число.Посмотрите на javadocs для String, особенно методы lastIndexOf (), split () и substring ().

Если вы поместили каждое целое число в отдельную строку и отслеживали последнее число, введенное впеременная экземпляра "count", тогда вам просто нужно вызвать jta.append( (count-1) + newLine); без необходимости извлекать текст вообще.

Обратите внимание, что ваш код не сохраняет последний введенный номер - он сохраняет (последний + 1)

...