我已经放在一起的几个方法,假设从数组中删除一个搜索的项目,并且数组中的数据也通过名为createLoginTable()
的方法放入JTable中。为什么项目从数组中删除但不会从我的表中删除?
当我的删除按钮actionListener方法执行时,元素或登录已成功从数组中删除:'listOfLogins',但该元素似乎并未从JTable中删除,因为它仍然存在。
这里是开始与ActionListener的方法:
if(e.getSource()==deleteLoginButton)
{
int loopNo = list.nextLogin; ///Variables used in the 'removeLogin' Method
String foundLogin = list.listOfLogins[foundLocation].toString();
Login[] loginList = list.listOfLogins;
LoginList list = new LoginList(); //The 'list' is wiped
list.removeLogin(loginList, foundLogin, loopNo);
list.writeLoginsToFile(); //Writes logins to file (not integral to the array)
String[][] loginTableLogins = new String[50][2]; //Wipes the JTable Array
createLoginsTable(); //Creates the JTable
searchLoginButton.setEnabled(true);
editLoginButton.setEnabled(false);
deleteLoginButton.setEnabled(false);
addLoginButton.setEnabled(true);
}
这是 'removeLogin' 方法(这是在一个单独的 '列表' 类):
public void removeLogin(Login[] array, String unwantedLogin, int loop)
{
for(int i=0;i<loop;i++)
{
String currentLogin = array[i].toString();
if(!currentLogin.equals(unwantedLogin))
{
Login login = new Login();
addLogin(array[i]);
}
}
}
加上 'addLogin'方法(虽然我确信这不是我的问题的根源):
public void addLogin(Login tempLogin)
{
listOfLogins[nextLogin] = tempLogin;
System.out.println(listOfLogins[nextLogin]);
nextLogin++;
System.out.println(nextLogin);
}
而'createLoginsTable'方法:
public void createLoginsTable()
{
for(int i=0;list.nextLogin>i;i++)
{
loginTableLogins[i] = list.listOfLogins[i].toArray();
System.out.println(list.listOfLogins[i].toString());
}
JTable loginsTable = new JTable(loginTableLogins, loginTableTitles);
JScrollPane loginsScrollPane = new JScrollPane(loginsTable);
loginsScrollPane.setBounds(400, 200, 200, 250);
testPanel.add(loginsScrollPane);
}
我用“的System.out.println的,所以我99%肯定该元素已经从数组中删除(这也是显而易见的,通过我的writeLoginsToFile
方法)所以我希望这个信息帮助。
只是看看登录登录=新的登录();'在删除方法 – chancea
为了更好的帮助,请发布[SSCCE](http://sscce.org/)。 –