Estamos a domingo y estoy ansioso por ver tu metodo!! xD
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menú public void creaCB(HashTableMap<String, String> Atribs,NodoArbol nodog){
Iterable<Entry<String, String>> listaCombo=Atribs.entries();
Iterator<Entry<String, String>>it= listaCombo.iterator();
System.out.println("LISTA HASH: ");
System.out.println(listaCombo);
if(!it.hasNext()){ System.out.println("LA TABLA NO TIENE ELEMENTOS");
nodog.remove(jLabel3);
CampoNom.setPreferredSize(new java.awt.Dimension(106, 20));
}
else{
CampoAtrib = new JComboBox();
int i=0;
while(it.hasNext()){
if(i==0)CampoAtrib.addItem(it.next().toString());
else CampoAtrib.insertItemAt(it.next().toString(), i);
i++;
}
System.out.println("Hemos insertado en la tabla: "+CampoAtrib.getItemCount()+" elementos");
System.out.println(" El elem 1 es: ");
System.out.println(CampoAtrib.getItemAt(1));
CampoAtrib.setPreferredSize(new java.awt.Dimension(97, 20));
CampoAtrib.addActionListener(new ActionListener() {
@SuppressWarnings("unchecked")
@Override
public void actionPerformed(ActionEvent e) {
JComboBox cb = (JComboBox)e.getSource();
String newSelection = (String)cb.getSelectedItem();
//AQUI ES DONDE ESCRIBES EL VALOR Q TIENE EL ID
// Accion a realizar cuando el JComboBox cambia de item seleccionado.
//Entry<String, String> val=(Entry<String, String>) CampoAtrib.getSelectedItem();
// CampoValAtrib.setText(val.getValue().toString());
CampoValAtrib.setText(newSelection);
}
});
this.add(CampoAtrib);
panel.setPreferredSize(new Dimension((maxNodos+nodosNivel)*130,(altura+1)*170));
panel.setPreferredSize(new Dimension(maxNodos*130,altura*170));
x=(this.getWidth()/nodosNivel);
//la altura Y se obtiene multiplicando el espacio asignado a cada nivel (alto total de la pantalla dividido numero de niveles)
//por el nivel actual menos 1, para que la raiz nos quede bien arriba.
y=(i-1)*(this.getHeight()/altura);
/**
* Dibuja el árbol correspondiente
*/
protected void paintComponent(Graphics g){
super.paintComponent(g);
//la altura indica en cuanto debemos dividir la pantalla ( eje Y )
int altura=calcAltura(arbol, arbol.root());
//dibujamos cada nivel
for (int i=1; i<=altura; i++){
//obtenemos todos los nodos del nivel i y los guardamos en una lista
//Cogemos la lista de hijos
PositionList<Position<NodoXML>> lista=obtenerPosicionesNivel(i, arbol);
int nodosNivel=lista.size()+1;
int x=this.getWidth()/nodosNivel;
//la altura Y se obtiene multiplicando el espacio asignado a cada nivel (alto total de la pantalla dividido numero de niveles)
//por el nivel actual menos 1, para que la raiz nos quede bien arriba.
int y=(i-1)*this.getHeight()/altura;
int hijosagregados=0;
int hijospadre=0;
for (Position<NodoXML> p: lista){
//hay que dividir entre caso especial (nodo raiz) y caso normal
if (arbol.isRoot(p)){
y+=20;
//guardamos los valores de la ubicacion del nodo
p.element().setX(x);
p.element().setY(y);
//pintamos el nodo
// AQUI INCLUIRIAMOS EL COMPONENTE DEL NODO GRAFICO DE LA OTRA CLASE
g.drawRect(x, y, p.element().getNombre().length(), 20);
//pintamos los detalles del nodo
g.drawString("Nom:"+p.element().getNombre(), p.element().getX()+2, y+13);
}
//caso normal
else{
//calculamos estos valores auxiliares para el resto de las cuentas.
//hijospadre=arbol.parent(p).element().getChildren().size();
hijospadre=((NodePositionList<Position<NodoXML>>) arbol.children(arbol.parent(p))).size();
int mitad=hijospadre/2;
int difx=0;
//calculamos el diferencial de x, es decir, negativo si estamos insertando a izquierda
if (hijosagregados<mitad)
difx=-1;
//positivo si estamos agregando a derecha
else difx=1;
//a la posicion del padre en x se le suma (o resta) un valor, resultado de:
//se multiplica el x del padre por 2, definiendo asi el espacio total para los hijos, que luego se divide
//entre los nodos del nivel, obteniendo asi la distancia entre nodos. Eso se multiplica por el valor absoluto
//de la resta mitad-hijosagregados, que señala que nodo estamos agregando y en que posicion debe ir:
//nos dira si es el nodo que esta justo a la mitad (0), si es el primero entre varios(mitad-0) o si es el ultimo entre varios.
//todo eso multiplicado por difx que indica hacia que lado se agrega(izquierda o derecha, - o +);
int saved=arbol.parent(p).element().getX()+(difx*arbol.parent(p).element().getX()*2/nodosNivel*(Math.abs(mitad-hijosagregados)));
//dibujamos los nodos
g.drawRect(saved, y, p.element().getNombre().length()+2, 15);
g.drawLine(saved+p.element().getNombre().length()/2, y, arbol.parent(p).element().getX()+arbol.parent(p).element().getNombre().length()/2, arbol.parent(p).element().getY()+15);
g.drawString("Nom:"+p.element().getNombre(), p.element().getX()+2, y+13);
//guardamos los valores de este nodo
p.element().setY(y);
p.element().setX(saved);
//verificamos si ya agregamos todos los hijos de un padre
//(notar que la lista de nodos los ordena de forma que todos los hijos de un mismo ancestro esten juntos)
if (hijosagregados<hijospadre)
hijosagregados++;
else hijosagregados=0;
}
}
}
}
import java.awt.Dimension;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.WindowConstants;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.ListModel;
/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class NodoGrafico extends javax.swing.JPanel {
private JEditorPane jEditorPane1;
private JEditorPane jEditorPane2;
private JButton jButton1;
private JScrollPane jScrollPane1;
private JList jList1;
private JButton jButton3;
private JButton jButton2;
/**
* Auto-generated main method to display this
* JPanel inside a new JFrame.
*/
/**public static void main(String[] args) {
JFrame frame = new JFrame();
frame.getContentPane().add(new NodoGrafico());
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}*/
public NodoGrafico() {
super();
initGUI();
}
public void initGUI() {
try {
setPreferredSize(new Dimension(100,150));
{
jButton1 = new JButton();
this.add(jButton1);
jButton1.setText("Nom:");
}
{
jEditorPane1 = new JEditorPane();
this.add(getJEditorPane1());
jEditorPane1.setText("nomb");
}
{
jButton2 = new JButton();
this.add(getJButton2());
jButton2.setText("Text:");
}
{
jEditorPane2 = new JEditorPane();
this.add(jEditorPane2);
jEditorPane2.setText("txt");
}
{
jButton3 = new JButton();
this.add(getJButton3());
jButton3.setText("Atribs:");
}
{
jScrollPane1 = new JScrollPane();
this.add(jScrollPane1);
jScrollPane1.setPreferredSize(new java.awt.Dimension(98, 36));
{
ListModel jList1Model =
new DefaultComboBoxModel(
new String[] { "Item One", "Item Two" });
jList1 = new JList();
jScrollPane1.setViewportView(jList1);
jList1.setModel(jList1Model);
jList1.setPreferredSize(new java.awt.Dimension(67, 36));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public JEditorPane getJEditorPane1() {
return jEditorPane1;
}
public JButton getJButton1() {
return jButton1;
}
public JButton getJButton2() {
return jButton2;
}
public JButton getJButton3() {
return jButton3;
}
public JList getJList1() {
return jList1;
}
}