我正在将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上发帖。
答案 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)