Menú

Mostrar Mensajes

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ú

Temas - Fran88

#1
Buenas, estoy creando una JComboBox pero quiero hacerlo de forma q se construya a partir de una lista, el problema es q si añado con addItem una vez, 2 o 3, funciona, pero al hacerlo con un iterador en un bucle q lea la lista, dice q lo inserta pero al visualizarlo aparece un elemento en la caja y no se despliega nada!!!
Mi codigo donde la creo es este:

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);


gracias
#2
Java / Incluir Componente grafico en un JPanel
21 Agosto 2009, 19:45 PM
Buenas!,

Estaba probando swing, y he creado en una clase, una pequeña "applet" que contiene nombre,texto y atributos, es un panel enanisimo y lo he pensado para dibujar un panelito de estos por cada Nodo de un arbol que voy a pintar.

El problema q tengo esq no he usado swing en mi vida y he estado mirando pero pierdo muxisimo tiempo y doy palos de ciego.

El codigo de mi clase NodoGrafico es este:


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;
}

}

Tengo la clase principal q ya me dibuja un arbol, pero digamos q donde dibuja un rectangulo con "nombre" quiero sustituirlo por esa pequeña clase q os acabo de poner...

Yo estoy desesperado si alguien pudiera responderme lo agradeceria.

#3
Java / Acceder a metodo Protected
13 Agosto 2009, 18:52 PM
Buenas!,

tengo un problema con una cosilla que ando programando:

Resulta que tengo declarado un arbol de tipo "LinkedTree<Integer>", LinkedTree es una clase que tiene entre sus metodos uno protegido, CreateNode, al cual no puedo acceder pq no me aparece como visible.

He probado a hacer q la clase en la q estoy trabajando herede de LinkedTree (haciendo extends LinkedTree), pero sigue sin aparecer como visible.

La unica manera en q aparece es haciendo un casting de la misma clase delante del arbol, pero cuando ejecuto el codigo da error de que no puede hacer casting de mi clase al arbol.

Llevo 1 dia entero y no consigo nada, a ver si alguien puede ayudarme.
Gracias.
#4
Buenas,
estoy haciendo un proyecto para la uni en el que tengo una clase DibujarNodo que dibuja Nodos de un arbol que contienen: Nombre, texto y una lista de atributos.

Esta clase tiene un metodo paint que quiero reescribir con el objetivo de pintar en un Jpanel todos los nodos del arbol independientemente del tamaño que tenga el arbol, y que si el arbol es muy grande no se solapen en pantalla los nodos ala hora de dibujarlos.

Me comentaron que con un JTree se puede hacer esto, pero me prohiben usarlo, asique tengo que hacerlo yo a pelo dibujandolo sobre un JPanel.

De momento no he hecho mas que las cabeceras y un ejemplo inicial del Pintar:

public class DibujarNodo extends JPanel
{
    /** */
    private int CoordenadaX;
   
    /** */
    private int CoordenadaY;
   
    /** */
    private int SizeX;
   
    /** */
    private int SizeY;
   
    /** */
    public void Pintar(Graphics g)
    {
    g.drawString("Hola", 10, 10);
    g.drawString((this.getSize().getWidth() + ", " + this.getSize().getHeight()), 20, 20);
    g.drawRect(50, 50, 100, 100);
    g.drawLine(80, 100, 100, 200);
    }

}


el problema q tengo es q representar eso graficamente con un arbol q tenga, 40 hijos y q por ejemplo todos ellos tengan otros 40 hijos, a mano no se puede pintar pq se empezarian a solapar en el panel.
Busco un algoritmo que pueda representar graficamente un arbol donde cada nodo es un por ejemplo un cuadrado que contiene nombre y texto sobre el cuadrado.

Algo similar a esto:
http://www.programacion.com/cursos/jap_data_alg/images/jw-0613-java10113.gif
Digamos que el panel deberia redimensionarse si el arbol se va haciendo mas grande, y el algoritmo debe hacer q no se vayan solapando.

Muchas gracias!