【发布时间】:2018-01-19 20:08:39
【问题描述】:
我尝试在添加新行之前删除 Jtable 的所有行。但由于某种原因,我无法删除一行。
在 ModelDynamiqueObjet 中,我定义了所有覆盖方法,然后我添加了两种方法,一种用于添加对象,另一种用于删除对象。
我成功添加了 serverals 对象,但是当我尝试删除 arraylist 的某些对象时,我失败了。 这是我的 AbstractModel 类:
public class ModeleDynamiqueObjet extends AbstractTableModel {
private ArrayList<Meteo> meteos ;
private String[] entetes = {"Date", "Temps", "Temperature", "Vent", "Humidité", "Nuage"};
public ModeleDynamiqueObjet() {
super();
meteos = new ArrayList<Meteo>();
}
@override methods....
public void addRow(Meteo meteo) {
meteos.add(meteo);
fireTableRowsInserted(meteos.size() -1, meteos.size() -1);
}
public void removeRow(int index){
meteos.remove(index);
fireTableRowsDeleted(index,index);
}
}
这是我的看法:
public class Fenetre extends JFrame implements Observer, ActionListener {
private JTextField adresseField;
private ModeleDynamiqueObjet model;
private JTable tableau;
private JScrollPane scrollPane;
private Controller controller = null;
public Fenetre(Controller controller) {
super("Ma météo");
this.controller = controller;
GraphicsEnvironment.getLocalGraphicsEnvironment();
this.setSize(800,800);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(new BorderLayout());
model = new ModeleDynamiqueObjet();
tableau = new JTable(model);
scrollPane = new JScrollPane(tableau);
getContentPane().add(new JScrollPane(scrollPane), BorderLayout.CENTER);
this.setVisible(true);
}
@Override
public void update(Observable o, Object arg) {
if(o instanceof MeteoAPI ){
MeteoAPI meteoAPI = (MeteoAPI) o;
ArrayList<Meteo> meteos = new ArrayList<Meteo>(meteoAPI.getMeteos());
for(int i =0 ; i < model.getRowCount(); i++){
model.removeRow(i);
}
for (Meteo meteo : meteos) {
model.addRow(meteo);
}
this.setVisible(true);
}
} }
如果有人可以告诉我我做错了什么。谢谢你的帮助
【问题讨论】:
-
你的循环一定是反的,检查答案
标签: java jtable abstracttablemodel