У меня есть проблема с отображением данных списка массива <> объект JTableне может Получать данные модели в JTable
public class SearchPatient extends JInternalFrame implements KeyListener
{
patientDetailBean pdb=new patientDetailBean();
ArrayList<patientDetailBean> ap=new ArrayList<patientDetailBean>();
String[] columnNames = {"Ptn No",
"Name",
"Gender",
"City",
"ContactNo",
"Birth-Date",
"MaritalStatus",
"Occupation",
"BloodGroup",
"TimeOfRegistration"
};
DefaultTableModel dm;
DefaultTableModel model;
public SearchPatient()
{
//other initilization and displaying
ap=pdb.getAllPatientDetail();
setTableData(ap);
//other initilization, displaying and KeyListener and all working properly
}
private void setTableData(ArrayList<patientDetailBean> arrayp)
{
int lenap=arrayp.size();
Object[][] data=new Object[lenap][10]; // creating dynamically array of object
dm = (DefaultTableModel)table.getModel(); //creating model from table
//removing all row from existing data in table
while(table.getRowCount()>0)
{
((DefaultTableModel) table.getModel()).removeRow(0);
}
//getting data from arrayp ArrayList<patientDetailBean> and save it to array of object(data)
int in=0;
for(Object obj:arrayp)
{
patientDetailBean pdb1=new patientDetailBean();
pdb1=(patientDetailBean) obj;
data[in][0]=pdb1.getPatientid();
data[in][1]=pdb1.getFirstname()+" "+pdb1.getMiddlename()+" "+pdb1.getSurname();
data[in][2]=pdb1.getGender();
data[in][3]=pdb1.getCity();
data[in][4]=pdb1.getContactno();
data[in][5]=pdb1.getBirthdate();
data[in][6]=pdb1.getMaritalstatus();
data[in][7]=pdb1.getOccupation();
data[in][8]=pdb1.getBloodgroup();
data[in][9]=pdb1.getDatetimeofcase();
in++;
}
//creating model from array of object(data)
model = new DefaultTableModel(data, columnNames);
//save data to table
table = new JTable(model);
}
public void keyTyped(KeyEvent key)
{
//This is working proper
if(key.getSource().equals(txtpname))
{
ap=pdb.getAllPatientDetail();
patientDetailBean pdb=new patientDetailBean();
ArrayList<patientDetailBean> arr=new ArrayList<patientDetailBean>();
arr.clear();
for(Object obj:ap)
{
pdb=(patientDetailBean) obj;
//getting data from object
String str1=(pdb.getFirstname()+" "+pdb.getMiddlename()+" "+pdb.getSurname()).toLowerCase();
//getting data which user entered(user want to search)
String str2=(txtpname.getText()+key.getKeyChar()).toLowerCase();
if(str1.contains(str2)) // checking for data equal and contain which user typed in JTextField(txtpname) with str1
{
arr.add(pdb); //save data to ArrayList<patientDetailBean>
}
}
//set recived ArrayList<> object to
setTableData(arr);
}
}
}
1) Первый раз, когда я запускаю этот код, чем данные, полученные в JTable является правильным. , когда я ввожу любую клавишу в textField, в это время данные корректно очищаются от таблицы, но не отображаются новые данные для JTable
Спасибо, дорогой MadProgrammer! –