miércoles, 6 de junio de 2012

Relacionar JInternalFrame con lineas en java




Googleandoencontréuncódigoque meparecióinteresante y aste se me vino algo a la mente de desarrollar una miniaplicaciónUML en java con base del ejemplo que voy a compartir con todos ustedes.
Se trata de unir con lineas o casi "relacionar" ventanas hijas otambiénllamados JInternalFrame para hacer esto necesitamos de la claseGraphics2D.

Este es elmétodoencargado de dibujar las lineas entre las ventanas y de obtener las coordenadas de posicionamiento de estas
   public void dameLineas(Graphics2D g2, JDesktopPane desktop) {
Component[] c = desktop.getComponents();
for (int j = 0; j c.length; j++) {
int x1 = c[j].getX() + c[j].getWidth() / 2;
int y1 = c[j].getY() + c[j].getHeight() / 2;
for (int k = j + 1; k c.length; k++) {
int x2 = c[k].getX() + c[k].getWidth() / 2;
int y2 = c[k].getY() + c[k].getHeight() / 2;
g2.setColor(Color.green);
g2.draw(new Line2D.Double(x1, y1, x2, y2));

}
}
}

Tambiéndebo de crear una instancia(objeto o algo real) que seria mis ventanas internas,colocando el titulo,el tamaño de cada ventana,y colorear cada ventana para diferenciar de las otras,p es la variable la cual posee las coordenadas de separacion o posicionamiento de las ventanas

      
public JInternalFrame setInternalFrame(int count, Point p) {
int color[]={244645,4492246,17724962};
JInternalFrame iframe = new JInternalFrame("Relacion de Objetos " + count, true, true, true, true);
iframe.setSize(200, 100);
for(int a=0; acount; a++)
{
//agrego colores para diferenciar
iframe.setBackground(new Color(color[a]));
}
/*******************************/
iframe.setLocation(p.x, p.y);
iframe.setVisible(true);
return iframe;
}


Si lo imaginas,lo programas

No hay comentarios:

Publicar un comentario