Estou desenvolvendo um programa semelhante ao Paint, no qual tenho um model para armazenar as primitivas graficas e outro model/adapter para armazenar as primitivas incluindo algumas propriedades, tambem possuo 2 views uma para cada model (parte grafica(impl Observer) e JTable com as propriedades, ambas JInternalFrames) ao pressionar o btn do mouse na view grafica e solta-lo delimito os pontos iniciais e finais da primitiva(forma geometrica) desenhando nesta view e atualizando o modelo grafico porem a view tabela/adapter nao esta sendo atualizada atraves do model/adapter/observer denominado tablemodel que recebe o graficmodel e o adapta.
trechos de codigo:
//view tabela
import javax.swing.*;
import javax.swing.table.TableColumn;
public class JPaintTableView extends JInternalFrame
{
private JPaintTableModel ptm;
private JTable tabInfo;
private JScrollPane scrInfo;
private JComboBox cbxColors;
public JPaintTableView(JPaintTableModel ptm)
{
this.ptm = ptm;
JPaintComboColors cbxBor = new JPaintComboColors();
JPaintComboColors cbxPre = new JPaintComboColors();
tabInfo = new JTable(ptm.getTabModel());
tabInfo.getTableHeader().setReorderingAllowed(false);
TableColumn colCorBor = tabInfo.getColumnModel().getColumn(6);
colCorBor.setCellEditor(new DefaultCellEditor(cbxBor));
TableColumn colCorPre = tabInfo.getColumnModel().getColumn(7);
colCorBor.setCellEditor(new DefaultCellEditor(cbxPre));
scrInfo = new JScrollPane(tabInfo);
getContentPane().add(scrInfo);
setSize(640,200);
setClosable(true);
setResizable(false);
setTitle("TableView");
setVisible(true);
}
}
//model tabela
import java.util.Observable;
import java.util.Observer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
public class JPaintTableModel implements Observer
{
private JPaintGraphicModel pgm;
private Object[][] prim;
private String[] colNomes;
private DefaultTableModel tmdPtm;
public JPaintTableModel(JPaintGraphicModel pgm)
{
pgm.addObserver(this);
this.pgm = pgm;
colNomes = new String[]{"Nome", "Tipo", "X1",
"Y1", "X2", "Y2", "Cor Borda", "Cor Pre..."};
tmdPtm = new DefaultTableModel(prim,colNomes);
}
public void update(Observable arg0, Object arg1)
{
for (int i = 0; i < pgm.getVPrim().length; i++)
{
prim[i][0] = pgm.getVPrim()[i].getClass().getName();
prim[i][1] = pgm.getVPrim()[i].getClass().getName();
prim[i][2] = Integer.toString(pgm.getVPrim()[i].getP1().x);
prim[i][3] = Integer.toString(pgm.getVPrim()[i].getP1().y);
prim[i][4] = Integer.toString(pgm.getVPrim()[i].getP2().x);
prim[i][5] = Integer.toString(pgm.getVPrim()[i].getP2().y);
prim[i][6] = pgm.getVPrim()[i].getCorBor();
prim[i][7] = pgm.getVPrim()[i].getCorPre();
}
}
public String getColumnName(int col)
{
return colNomes[col].toString();
}
public int getRowCount()
{
return prim.length;
}
public int getColumnCount()
{
return colNomes.length;
}
public Object getValueAt(int row, int col)
{
return prim[row][col];
}
public boolean isCellEditable(int row, int col)
{
return true;
}
public void setValueAt(Object value, int row, int col)
{
prim[row][col] = value;
update(pgm, value);
}
public TableModel getTabModel()
{
return tmdPtm;
}
}
[size=“11”][color=“red”]* Editado: Lembre-se de utilizar BBCode em seus códigos - Reifel[/color][/size] :joia: