Я выяснил, почему мой arraylist всегда возвращал размер 0, но я не могу исправить проблему. У меня есть пользовательская модель с методом addHuman (Human h), который предназначен для добавления в массив. Только проблема в том, что это не так. Теперь, если бы я использовал обычный метод, скажем, model.add (index, объект o) он действительно будет работать и увеличивать размер моего arraylist, но не отображается на моей jtable. Мой вопрос: как я могу сделать эту работу для моего пользовательского метода addHuman? Любая помощь очень ценится!Почему мои методы добавления арраистов противоречат друг другу, как я могу изменить свой метод добавления
и следующие . в основной класс, который использует этот метод, когда я нажимаю на кнопку на addIndividual, он должен добавить человека в моей HumanListModel:
addIndividual.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
Human temp;
try {
temp = new Human();
modelx.addHuman(indexPoint, temp);
///the addHuman method does display on jtable but doesn't increment arraylist, meaning that the size is always 0 which creates many problems/////
//modelx.add(indexPoint, temp); does indeed increment the arraysize but then it doesn't display the values on the jtable////
indexPoint++;
System.out.println(modelx.size());
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
newbiex.revalidate(); ////is the jtable////
}
});
вот мой заказ HumanListModel:
public class HumanListModel extends DefaultListModel implements TableModel
{
private ArrayList<Human> data;
public HumanListModel()
{
super();
data = new ArrayList<Human>();
}
public void addHuman(int k, Human h)
{
data.add(k, h);
fireIntervalAdded(this, data.size(), data.size());
}
public Human getHuman(int o)
{
return data.get(o);
}
public void removeHuman(Human h)
{
data.remove(h);
}
public int getColumnCount()
{
// the number of columns you want to display
return 1;
}
public int getRowCount()
{
return data.size();
}
public Object getValueAt(int row, int col)
{
return (row < data.size()) ? data.get(row) : null;
}
public String getColumnName(int col)
{
return "Human";
}
public Class getColumnClass(int col)
{
return Human.class;
}
public void addTableModelListener(TableModelListener arg0) {
}
@Override
public boolean isCellEditable(int arg0, int arg1) {
return false;
}
public void removeTableModelListener(TableModelListener arg0) {
}
public void setValueAt(Object arg0, int arg1, int arg2) {
}
}
где я могу добавить это? И как я могу заставить мой метод addHuman работать? :( – Iron
И addTableModelListener() и removeTableModelListener() не следует переопределять пустыми методами –
Я не уверен, что добавить в эти методы, я еще не получил их:/ – Iron