我有一个程序可以做到这一点。用户输入的字符串作为字符串存储在arraylist中。当用户按下向上箭头时,最近输入的命令将显示在JTextField中。进一步按下向上箭头将显示JTextField中的其他命令,按最近输入的顺序排序,直到没有更多命令要显示或用户停止为止。
将字符串存储在arraylist中工作正常我唯一的问题就是Jtextfield只有一个命令显示在我按下向上箭头时即使我输入了多个命令也可以任何身体帮助下面是按下向上箭头时的代码。
if (e.getKeyCode() == KeyEvent.VK_UP)
{
for(int i = 0; i < history.list.size(); i++)
{
field.setText(history.list.get(i));
}
}
感谢您的帮助,非常感谢。
答案 0 :(得分:1)
你的问题在于这段代码:
for(int i = 0; i < history.list.size(); i++)
{
field.setText(history.list.get(i));
}
这使field
始终显示历史记录列表中的最后一个元素。因为它将迭代整个列表,因此它将始终使用列表中的最后一个元素更新field
。
要解决此问题,您可以保留index
变量。按下键时,相应地更新索引。然后相应地设置字段:
if (e.getKeyCode() == KeyEvent.VK_UP)
{
index = (index + 1)% history.list.size(); //Ensure it stays within bounds
field.setText(history.list.get(index));
}
else if (e.getKeyCode() == KeyEvent.VK_DOWN)
{
index = Math.max(0, index - 1); //Ensure it stays within bounds
field.setText(history.list.get(index));
}