Я хочу извлечь данные из таблицы в базе данных на основе столбцов, которые я указываю с помощью AbstractTableModel. В таблице 8 столбцов, но вы хотите показать только 3 из 8 столбцов.
Например:
В базе данных есть такие столбцы: ID, First_Name, Last_Name, ...., Phone_Number. Если я укажу, что хочу отображать в таблице First_Name, Last_Name, Phone_Number, он покажет мне ID, First_Name и Last_Name. Я думаю, что мне следует указать индекс имени столбца из базы данных, чтобы отобразить правильный столбец, но не знаю, как реализовать это в моем пользовательском классе AbstractTableModel.
public class PhysicianModelController extends AbstractTableModel
{
PhysicianBroker pb = PhysicianBroker.getPhysicianBroker();
private String[] columnNames = {"First Name", "Last Name", "Phone Number"};
private ArrayList<Physician> ph = pb.getAllPhysicians();
@Override
public int getRowCount() {
return ph.size();
}
@Override
public int getColumnCount() {
return columnNames.length;
}
@Override
public String getColumnName(int col)
{
System.out.println(col);
return columnNames[col];
}
@Override
public String getValueAt(int rowIndex, int columnIndex) {
System.out.println(rowIndex + " : " + columnIndex);
Physician p = ph.get(rowIndex);
switch (columnIndex)
{
case 0:
return Integer.toString(p.getEmployeeId());
case 1:
return p.getFirstName();
case 2:
return p.getLastName();
case 3:
return p.getBirthDate();
case 4:
return p.getStartDate();
case 5:
return p.getEndDate();
case 6:
return p.getAddress();
case 7:
return p.getPhoneNumber();
default:
return "Incorrect input";
}
}
public void addRow(Physician p)
{
ph.add(p);
int row = ph.size();
fireTableRowsInserted(row,row);
fireTableDataChanged();
}
@Override
public Class getColumnClass(int c)
{
return getValueAt(0,c).getClass();
}
}
Я переопределил методы getRowCount(), getColumnCount(), getColumnName(), getValueAt() и getColumnClass() в своей реализации. Все работает правильно, как только я задаю все столбцы из таблицы базы данных.
Кто-нибудь будет достаточно любезен, чтобы помочь мне, как это сделать?
Спасибо
setValueAt
- person Vishal K   schedule 31.03.2013setValueAt
используется только при редактировании ячеек таблицы вручную. - person Eng.Fouad   schedule 31.03.2013String
, почему бы не использоватьreturn String.class;
внутриgetColumnClass()
? Кроме того,getValueAt()
должно иметь только 3 переключателя. - person Eng.Fouad   schedule 31.03.2013getValueAt
, у него всего 3 столбца, но он тестирует 7 случаев... - person Vishal K   schedule 31.03.2013JTextFields
, содержащее другую информацию, которую вы не показываете вJTable
. правильно? - person Vishal K   schedule 31.03.2013