У меня проблема при хранении данных (записанных в GUI) в JTable, который я уже создал. Проблема в том, что, когда я нажимаю кнопку добавления в графическом интерфейсе, вместо того, чтобы отображать ее в JTable, она открывает другое окно и отображает его там. Таким образом, он добавляет, но не отображает его в таблице. Вот часть кода, которая отображает информацию в другом окне:
import java.lang.Object;
import java.io.*;
import java.util.*;
public class MemberManager {
File custFile;
private Member m1 =
new Member("M0001", "Mark", "Abela", "13/05/90", "121 Kent Street", "21469432", "99456209");
private Member m2 =
new Member("M0002", "John", "Sant", "25/11/84", "55 Golden Road", "21226932", "79513625");
private ArrayList<Member> memMemb = new ArrayList<Member>();
public MemberManager(){
memMemb.add(m1);
memMemb.add(m2);
}
public String[][] getMembers(){
int pos = 0;
//Creating the table with the players data
String data [][] = new String[memMemb.size()][8];
for (Object obj : memMemb){
Member mem = (Member)(obj);
data[pos][0] = mem.getID();
data[pos][1] = mem.getName();
data[pos][2] = mem.getSurname();
data[pos][3] = mem.getDob();
data[pos][4] = mem.getAddress();
data[pos][5] = mem.getTel();
data[pos][6] = mem.getMob();
}
return data;
}
public void addMember(String id, String name, String surname, String dob, String address, String tel, String mob){
Member tempMem = new Member();
tempMem.setID(id);
tempMem.setName(name);
tempMem.setSurname(surname);
tempMem.setDob(dob);
tempMem.setAddress(address);
tempMem.setTel(tel);
tempMem.setMob(mob);
memMemb.add(tempMem);
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fos = new FileOutputStream("Member Data");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(memMemb);
oos.flush();
}
catch(IOException e) {
e.printStackTrace();
}
finally {
try {
fos.close();
}
catch(IOException e) {
e.printStackTrace();
}
}
try {
// read back
fis = new FileInputStream("Member Data");
ObjectInputStream ois = new ObjectInputStream(fis);
Object obj = ois.readObject();
memMemb = (ArrayList<Member>) obj;
ArrayList<Member> listFromFile = (ArrayList) obj;
for (Member member: listFromFile) {
System.out.println(member.toString());
}
}catch (IOException io){
System.err.println("Cannot access or write to file");
}catch (Exception e){
e.printStackTrace();
}
finally {
try {
fis.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
}
}
Используемая им JTable - это табличная модель по умолчанию, которая находится в другом пакете. Я использовал mouseListener на кнопке, чтобы добавить данные ... вот часть кода ...: -
memAddOk.addMouseListener(this);
memAddExit.addMouseListener(this);
}
public void mouseClicked(MouseEvent e){
if (e.getSource().equals(memAddOk)){
id = textBox[0].getText();
name = textBox[1].getText();
surname = textBox[2].getText();
dob = textBox[3].getText();
address = textBox[4].getText();
tel = textBox[5].getText();
mob = textBox[6].getText();
MemberManager tempData = new MemberManager();
tempData.addMember(id, name, surname, dob, address, tel, mob);
} else
if (e.getSource().equals(memAddExit)) {
this.dispose();
}
}
Как мне получить этот код для хранения в JTable?