我有这个程序,允许用户点击下一个或上一个查看员工记录。我在txt中有4个员工。我遇到的问题是当我点击下一个或上一个时它会继续阅读通过记录中的最后一个员工。我可以改变什么来阻止它?请告知。
这里是动作监听器部分的代码。
public Employee1(EmployeeDataSet employees)
{
this.numberOfEmployees = employees.getEmployeeCount();
this.employees = employees;
}
public void loadEmployeeInGUI(Employee e)
{
// set text field with name
Q1Field.setText(e.getName());
// set text field with title
Q2Field.setText(e.getName());
// set textfield with salary
Q3Field.setText(String.valueOf(e.getSalary()));
}
public void actionPerformed(ActionEvent x)
{
if (x.getSource() == Next)
{
index++;
if(index == this.numberOfEmployees) index=0;
Employee e = employees.getEmployeeAtIndex(index);
loadEmployeeInGUI(e);
}
}
if (x.getSource() == Previous) index--;
if (index ==-1) index = this.numberOfEmployees -1;
}
答案 0 :(得分:4)
此代码似乎使用Java Swing。话虽这么说,你应该使用CardLayout
。通过将个人Employee
与每张“卡片”相关联,您将能够轻松浏览(向前和向后)整个记录。
这种方法基本上将“辛勤工作”委托给布局管理器,这应该是它应该如何。
答案 1 :(得分:2)
我不同意CardLayout。使用CardLayout意味着您将为每个Component
创建一个Employee
,这可能是一个重要的数字。
在问题中提到他目前只有4 Employee
个实例,您仍然可以选择CardLayout
,但它根本不可扩展。
拥有一个UI,您可以在其中“设置”一个Employee,并相应地更新其值(就像在开始帖子中提供的代码中的情况一样)似乎是要走的路。
为什么他的特定代码不会导致所需的行为很难说,因为打开/关闭大括号似乎不匹配,我们不知道这个EmployeeDataSet
是如何实现的。但我更喜欢使用CardLayout
答案 2 :(得分:1)
我个人会重组如下:
public void actionPerformed(ActionEvent x) {
// handle increment / decrement
if (x.getSource() == Next) {
index++;
}
if (x.getSource() == Previous) {
index--;
}
// range check
if( index > this.numberOfEmployees ) {
index = 0;
}
if( index < 0 ) {
index = this.numberOfEmployees - 1;
}
// load up data
Employee e = employees.getEmployeeAtIndex(index);
loadEmployeeInGUI(e);
}