Cumprimentos a todos.O negocio eh o seguinte: estou desenvolvendo uma trab para facu de teoria dos grafos(Coloraçao).Neste programa desenho o grafo colorido em um JPanel usando tres algoritmos, sendo uma grafo de coloraçao diferente para cada algoritmo, e adiciono ele em um JInternalFrame. Ateh ai tudo bem.Porem, quando executo um dos algoritmos e depois o outro quanto retorno ao primeiro o painel perde a pintura e o grafo do respectivo algoritmo eh perdido com isso tenho de gerar ele novamente.Entao pessoal o q quero eh que quando retorno ao primeiro executado ou o anterior o grafo nao seja perdido e que os paineis soh pinte quando algum algoritmo for executado.As vezes acontence de os paineis perderem a pintura com um cliq do mouse, um maximizar/minimizar de janela ou outra acao na aplicaçao.
Meu metodo paint q esta na class PanelGrafico eh o seguinte:
public void paint(Graphics g)
{
super.paint(g);
if(cont)
cont= false;
if(!cont)
{
for(int k=0;k< vertice.size();k++)
{
Color c = (Color)vetCor.elementAt(k);
Bolinha bolinha = (Bolinha)vertice.get(k);
Color aux=null;
if(c ==Color.black)
aux = Color.black;
if(c==Color.blue)
aux = Color.blue;
if(c==Color.green)
aux = Color.green;
if(c==Color.pink)
aux = Color.pink;
if(c==Color.red)
aux =Color.red;
if(c ==Color.yellow)
aux = Color.yellow;
bolinha.setNome(""+k);
bolinha.setCor(aux);
this.add(bolinha);
//panel.add(bolinha);
}
repaint();
Point ptX,ptY;
int iCont = 0;
int iCont2=0;
for(int k=0;k < vetElemento.size();k++)
{
Bolinha bolinha = (Bolinha)vertice.get(k);
ptX = bolinha.getLocation();
for(int j=0;j < vetElemento.size();j++)
{
if(k<j && matriz[k][j]==1 )
{
Bolinha bolinha2 = (Bolinha)vertice.get(j);
ptY = bolinha2.getLocation();
g.setColor(Color.blue);
g.drawLine((int)ptX.getX() + 28,
(int)ptX.getY() + 35,
(int)ptY.getX() + 28,
(int)ptY.getY() + 35);
}
}
}
}
}
public void mouseDragged(MouseEvent e)
{
Component com = e.getComponent(); //pega a bolinha clicada
int x = com.getX() + e.getX();
int y = com.getY() + e.getY();
com.setLocation(x, y);
cont=true;
com.repaint();// pinta a bolinha
com.getParent().repaint();//pinta o panelgrafico
com.getParent().getParent().repaint();//pinta o internalframe
}
a class PanelGrafico implementa MouseMotionListener e class Bolinha tb eh um JPanel onde desenho a bolinha do vertice do grafo.
Concluindo fica assim: adiciono a Bolinha no PanelGrafico e o PanelGrafico no JInterFrame.
Desde jah agradeço e q a luz da razao esteja com vcs
Carlos Martins.>