検索された項目を配列から削除することを想定しているいくつかのメソッドをまとめました。また、配列のデータは、 というメソッドを介して JTable に入れられますcreateLoginTable()
。
削除ボタン 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
メソッドからも明らかです)。この情報が役立つことを願っています。