如何使用JMenuItems在JTextArea中的单独行上显示整数?

时间:2019-06-05 17:52:21

标签: java append jtextarea jmenu jmenuitem

我正在将JMenu(命名为Count)与四个JMenuItem(命名为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

当我单击Inc和Dec时将显示在TextArea中

但是相反,它只是

0
1
2
3
4

然后我得到一个NumberFormatException,说输入字符串是:

0
1
2
3
4

如果可能的话,我希望输入的字符串只是文本区域中的最后一个整数。

我希望这是有道理的。这是我第一次在stackoverflow上发帖。

1 个答案:

答案 0 :(得分:1)

获取文本时,它已返回“ 0 1 2 3 4”,该文本无法解析为整数,因此是异常。 如果要获取文本字段中的最后一个整数,则需要检索文本并找到代表最后一个整数的子字符串。查看String的javadocs,尤其是lastIndexOf(),split()和substring()方法。

如果您将每个整数放在单独的行上,并且跟踪了在实例变量“ count”中输入的最后一个数字,那么您只需要调用path('results/', views.search, name='search'), def search(request): print('here!') eqs = Equipment.objects.all() locs = Location.objects.all() if 'search' in request.GET: search_term = self.request.GET['search'] # searching = Equipment.objects.filter(name__icontains=search_term) searching = sorted( chain(eqs, locs) ) context['search_term'] = search_term context['searching'] = searching return render( request, 'results.html', context = { 'search_term': search_term, 'searching': searchin, } ) <form class="form-inline my-2 my-lg-0" action="{% url 'search' %}"> <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search" name="search"> <button class="btn btn-outline-success my-2 my-sm-0 search-button" role="button" type="submit">Search</button> </form>''' 而不用完全检索文本。

请注意,您的代码不会保存输入的最后一个数字-它会保存(last + 1)