/* *Autor original del código: Jose Castillo. http://lawebdeljose.blogspot.com * *Este código puede ser modificado y usado como se quiera. Pero, por favor, respetad estos comentarios. *Ha sido creado usando el IDE Net Beans 5.0 . * Este ejercicio sirve para ver el tema de la recursividad. puede ser útil para ver cómo funciona una ventana simple de Java. Tambien se ve una simple implementación de una cola con la clase nodo y sus métodos recursivos. * * *La ventana es muy simple porque lo que interesa es lo que hace dentro. * * **/publicclass cola extends javax.swing.JFrame {
nodo primero;
nodo ultimo;
/** Creates new form cola */publiccola() {
initComponents();
}
/// Este metodo lo ha generado automaticamente Net Beans.// <editor-fold defaultstate="collapsed" desc=" Generated Code ">privatevoidinitComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
jButton1 = new javax.swing.JButton();
jTextField1 = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jTextField2 = new javax.swing.JTextField();
jTextField3 = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jTextArea1.setColumns(20);
jTextArea1.setEditable(false);
jTextArea1.setRows(5);
jScrollPane1.setViewportView(jTextArea1);
jButton1.setText("A\u00f1adir a la Cola");
jButton1.addMouseListener(new java.awt.event.MouseAdapter() {
publicvoidmouseClicked(java.awt.event.MouseEvent evt) {
jButton1MouseClicked(evt);
}
});
jLabel1.setText("Cola");
jButton2.setText("Quitar de la cola");
jButton2.addMouseListener(new java.awt.event.MouseAdapter() {
publicvoidmouseClicked(java.awt.event.MouseEvent evt) {
jButton2MouseClicked(evt);
}
});
jButton3.setText("Buscar");
jButton3.addMouseListener(new java.awt.event.MouseAdapter() {
publicvoidmouseClicked(java.awt.event.MouseEvent evt) {
jButton3MouseClicked(evt);
}
});
jLabel2.setText("Aqu\u00ed puedes poner lo que quieres a\u00f1adir");
jLabel3.setText("Pon el n\u00famero que quieres quitar");
jLabel4.setText("Busca por contenido");
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.addContainerGap()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.add(jButton1)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(jTextField1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 157, Short.MAX_VALUE))
.add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 270, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED))
.add(layout.createSequentialGroup()
.add(jLabel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 95, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(181, 181, 181)))
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jLabel3)
.add(jLabel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 195, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(layout.createSequentialGroup()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING, false)
.add(org.jdesktop.layout.GroupLayout.LEADING, jButton3, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.add(org.jdesktop.layout.GroupLayout.LEADING, jButton2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
.add(layout.createSequentialGroup()
.add(jTextField3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 40, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 46, Short.MAX_VALUE))
.add(jTextField2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 86, Short.MAX_VALUE)))
.add(layout.createSequentialGroup()
.add(10, 10, 10)
.add(jLabel4)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.add(21, 21, 21)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel1)
.add(jLabel3))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 193, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(layout.createSequentialGroup()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jButton2)
.add(jTextField3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(jLabel4)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jButton3)
.add(jTextField2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jButton1)
.add(jTextField1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(jLabel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 31, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addContainerGap(29, Short.MAX_VALUE))
);
pack();
}// </editor-fold>//fin del texto automatico.privatevoidjButton3MouseClicked(java.awt.event.MouseEvent evt) {
//boton de buscarint contador=1;
nodo aux=primero;
while (aux!=null){
System.out.println(contador);
if (aux.dato.equals(jTextField2.getText())){ //comparar strings
aux=null;
System.out.println("esta en la posicion.. "+contador);
} else {
aux=aux.post;
contador++;
}
}
}
privatevoidjButton2MouseClicked(java.awt.event.MouseEvent evt) {
//boton de borrarint aux=Integer.valueOf( jTextField3.getText() ).intValue();
int aux1=1;
nodo auxi=primero;
while (aux1<=aux){ //recorrer la cola hasta que se encuentra el que hay que borrarif (aux==aux1){
if (aux!=1) auxi.ant.post=auxi.post;
else primero=auxi.post;
if (auxi.post!=null) auxi.post.ant=auxi.ant;
else {ultimo=auxi.ant;ultimo.post=null;}
}
auxi=auxi.post;
aux1++;}
jTextArea1.setText(primero.imprimir(0));
}
privatevoidjButton1MouseClicked(java.awt.event.MouseEvent evt) {
// cuando pulsamos el botonif (primero==null){ //insertar el primero
primero = newnodo(jTextField1.getText());
ultimo=primero;
}
else{ //insertar los demas
nodo n=newnodo(jTextField1.getText());
ultimo.insertar(n);
ultimo = n;
}
jTextArea1.setText(primero.imprimir(0));
}
publicstaticvoidmain(String args[]) {
java.awt.EventQueue.invokeLater(newRunnable() {
publicvoidrun() {
newcola().setVisible(true);
}
});
}
// Variables declaration - do not modifyprivate javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
private javax.swing.JTextField jTextField3;
// End of variables declaration
}
class nodo { //declaracion de la clase nodo
String dato;
nodo ant;
nodo post;
//constructorpublicnodo(String d){
dato=d;
ant=null;
post=null;
}
publicvoidinsertar(nodo n){ //relaciones entre objetos de la misma clase
n.post = post;
n.ant = this;
post = n;
}
public String imprimir(int i){ //recursividad
i++;
if(post!=null)
return(i+" "+dato+"\n"+post.imprimir(i));
elsereturn(i+" "+dato);
}
}