elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Problema con cola (solucionado)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con cola (solucionado)  (Leído 3,332 veces)
nolasco281


Desconectado Desconectado

Mensajes: 319


Ver Perfil
Problema con cola (solucionado)
« en: 25 Mayo 2014, 04:38 am »

Hola como estan

no se como implementar este codigo es un ejemplo de colas

El problema que tengo es que no se como llamar estas funciones en la parte principal
espero puedan ayudarme.


esto es lo que tengo en la principal
Código
  1. public static void main(String[] args) {
  2. Principal p = new Principal();
  3.  
  4. p.setVisible(true);
  5. p.setBounds(0, 0, 300, 200);
  6.  
  7. }



Clase cola

Código
  1. import java.util.ArrayList;
  2.  
  3.  
  4. public class Cola {
  5.  
  6. private ArrayList nodos;
  7.  
  8. public Cola(){
  9. nodos=new ArrayList<Integer>();
  10. }
  11.  
  12. public void insertar(int x){
  13. nodos.add(x);
  14. }
  15.  
  16. public void eliminar(){
  17. nodos.remove(0);
  18. }
  19.  
  20. public void resetear(){
  21. nodos.clear();
  22. }
  23.  
  24.  
  25. public ArrayList<Integer> getNodos() {
  26. return nodos;
  27. }
  28.  
  29.  
  30. public void setNodos(ArrayList<Integer> nodos) {
  31. this.nodos = nodos;
  32. }
  33. }



Clase que dibuja el panel

Código
  1. import java.awt.*;
  2. import javax.swing.JPanel;
  3.  
  4.  
  5. public class PanelDibujo extends JPanel {
  6.  
  7. public int x=20;
  8. public int y=100;
  9. public Cola cola;
  10. public boolean swborrar=false;
  11.  
  12. public PanelDibujo(Cola c){
  13.  cola=c;
  14. }
  15.  
  16. public void paintComponent(Graphics g){
  17.  super.paintComponents(g);
  18.  g2d.setColor(Color.WHITE);
  19.  g2d.fillRect(0,0,500,300);
  20.  g2d.setColor(Color.BLACK);
  21.  g2d.setStroke(new BasicStroke(2));
  22.  for(int i=0;i<cola.getNodos().size();i++){
  23.   if(i!=0){
  24.    g2d.drawLine(2*x*(i+1)-10, y+15, 2*x*(i+1), y+15);
  25.   }
  26.   g2d.drawRoundRect(2*x*(i+1), y, 30, 30, 10, 10);
  27.   g2d.drawString(""+cola.getNodos().get(i), 2*x*(i+1)+12, y+20);
  28.  }
  29.  
  30.  if(swborrar){
  31.   g2d.setColor(Color.WHITE);
  32.   g2d.fillRect(0,0,400,200);
  33.   cola.resetear();
  34.   swborrar=false;
  35.  }
  36. }
  37.  
  38.  
  39. public boolean isSwborrar() {
  40.  return swborrar;
  41. }
  42.  
  43.  
  44. public void setSwborrar(boolean swborrar) {
  45.  this.swborrar = swborrar;
  46. }
  47.  
  48. }



Clase clase principal

Código
  1. import java.awt.BorderLayout;
  2. import java.awt.event.ActionEvent;
  3. import java.awt.event.ActionListener;
  4.  
  5.  
  6. import javax.swing.*;
  7. import static javax.swing.JFrame.EXIT_ON_CLOSE;
  8.  
  9.  
  10. public class Principal extends JApplet{
  11.  
  12. PanelDibujo pd;
  13. JPanel pdatos;
  14. Cola cola;
  15.  
  16. public void init(){
  17.  
  18.  cola=new Cola();
  19.  pd=new PanelDibujo(cola);
  20.  pdatos=new JPanel();
  21.  
  22.  t=new JTextField(10);
  23.  JButton b=new JButton("Agregar");
  24.  b.addActionListener(new ActionListener(){
  25.  
  26.  
  27.   @Override
  28.   public void actionPerformed(ActionEvent e) {
  29.    try{
  30.     if(cola.getNodos().size()<8){
  31.      cola.insertar(Integer.parseInt(t.getText()));
  32.      pd.repaint();
  33.      repaint();
  34.     }else{
  35.      JOptionPane.showMessageDialog(null, "Maximo se mostraran 8 elementos.");
  36.     }
  37.    }catch(NumberFormatException nfe){
  38.     JOptionPane.showMessageDialog(null, "Error digite un Valor Valido");
  39.    }
  40.   }
  41.  
  42.  });
  43.  
  44.  JButton borrar=new JButton("Borrar");
  45.  borrar.addActionListener(new ActionListener(){
  46.  
  47.  
  48.   @Override
  49.   public void actionPerformed(ActionEvent e) {
  50.    if(cola.getNodos().size()>0){
  51.     cola.eliminar();
  52.     pd.repaint();
  53.     repaint();
  54.    }
  55.   }
  56.  });
  57.  
  58.  JButton limpiar=new JButton("Limpiar");
  59.  limpiar.addActionListener(new ActionListener(){
  60.  
  61.  
  62.   @Override
  63.   public void actionPerformed(ActionEvent e) {
  64.    pd.setSwborrar(true);
  65.    pd.repaint();
  66.    repaint();
  67.   }
  68.  
  69.  });
  70.  
  71.  pdatos.add(new JLabel("Valor: "));
  72.  pdatos.add(t);
  73.  pdatos.add(b);
  74.  pdatos.add(borrar);
  75.  pdatos.add(limpiar);
  76.  
  77.  add(pd);
  78.  add(pdatos,BorderLayout.SOUTH);
  79. }
  80. }


« Última modificación: 25 Mayo 2014, 10:28 am por nolasco281 » En línea

Lo que se puede imaginar... se puede programar.
EAMP14

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Problema con cola
« Respuesta #1 en: 25 Mayo 2014, 08:10 am »

Antes que nada creo que es mejor que

Código:
p.setVisible(true);
p.setBounds(0, 0, 300, 200);

Esten dentro del constructor de Principal

Para implementar los métodos de otra clase, es necesario que hagas una instancia de la clase y crees un objeto de esa clase, en este caso Cola(); entonces tu main te podría quedar como:

Código:
    public static void main(String[] args) {
    Principal p = new Principal();
    Cola cola = new Cola();

    // Implementación
    cola.insertar(2);
    cola.resetear();
    // etc...
    
    }

Que de hecho tu clase Pirncipal ya lo está implementando. Pero esa seria la forma, accedes por medio del indentificador donde se aloja la referencia hacia el Objeto de esa Clase.


« Última modificación: 25 Mayo 2014, 08:16 am por EAMP14 » En línea

nolasco281


Desconectado Desconectado

Mensajes: 319


Ver Perfil
Re: Problema con cola
« Respuesta #2 en: 25 Mayo 2014, 08:33 am »

Hola

Perdon ya entendi lo que tu mencionas, el problema es que no puedo hacer que salga la parte grafica pero entiendo lo que tratas de decirme, la parte grafiaca ya hace la insercion y el borrado si te fijas.

y a lo que haces mencion tu, solo llamo a los metodos de cola por lo tanto no va a pasar nada (de forma grafica pero si en memoria si no me equivoco)y lo que quiero es llamar al metodo de graficado ya que la insercion y el borrado lo hace dinamicamente desde la parte grafica.

A lo que tu mencionas de instaciar, no se como instanciar la clase que dibuja el panel o si eso es lo que hay que hacer estoy algo confundido con eso.

Gracias por contestar

saludos
« Última modificación: 25 Mayo 2014, 09:06 am por nolasco281 » En línea

Lo que se puede imaginar... se puede programar.
Migugami

Desconectado Desconectado

Mensajes: 22


Systems Analyst


Ver Perfil
Re: Problema con cola
« Respuesta #3 en: 25 Mayo 2014, 08:49 am »

JPanel llama automáticamente al método paintComponent(Graphics g) cuando se detecta algún posible cambio en la pantalla (movimiento de ventana, etc). Para hacer que un JPanel actualice su gráfica en un momento deseado basta con llamar al método repaint(). También puedes crear un método dibujar(JPanel panel, List<Nodo> nodos) que acepte la lista de nodos actual y un panel, y respecto a eso graficar algo en el panel recibido.
En línea

nolasco281


Desconectado Desconectado

Mensajes: 319


Ver Perfil
Re: Problema con cola
« Respuesta #4 en: 25 Mayo 2014, 08:57 am »

Hola. no entiendo muy bien.

La parte grafica ya la hace el programa lo que no se, es como llamarla o implementarla disculpen la ignorancia.

y gracias por responder.

Saludos.
En línea

Lo que se puede imaginar... se puede programar.
EAMP14

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Problema con cola
« Respuesta #5 en: 25 Mayo 2014, 09:09 am »

Bastaria con crear un Objeto de PanelDibujo y agregarlo a Principal en su constructor.

add(new PanelDibujo);

aunque no sé si extends JApplet funcione igual que un JFrame, no he trabajado con ello, pero igual,
mejor dejo en manos de mi otro compañero  que tiene mas conocimientos con esto. Es muy bueno! Saludos.
En línea

nolasco281


Desconectado Desconectado

Mensajes: 319


Ver Perfil
Re: Problema con cola
« Respuesta #6 en: 25 Mayo 2014, 09:18 am »

Bastaria con crear un Objeto de PanelDibujo y agregarlo a Principal en su constructor.

add(new PanelDibujo);

aunque no sé si extends JApplet funcione igual que un JFrame

A eso iba tratando de hacer una instancia de PanelDubijo

pero estoy seguro asi seguro de que no va asi. ya aunque fuera asi no serviria ya que le estoy mandando un dato a una metodo. y lo que deseo en pocas palabras es llamar al toda la clase que me dibuje la parte grafica del todo el programa.

Código
  1. PanelDibujo o = new PanelDibujo(Dato que se le manda del textbox);

estaba viendo ejemplos en donde llama a toda la clase de la siquiente manera
pero tampoco funciono.

Código
  1. new Principal();

Mil gracias por tomarte el tiempo de contestar.

Saludos.
« Última modificación: 25 Mayo 2014, 10:28 am por nolasco281 » En línea

Lo que se puede imaginar... se puede programar.
nolasco281


Desconectado Desconectado

Mensajes: 319


Ver Perfil
Re: Problema con cola
« Respuesta #7 en: 25 Mayo 2014, 10:27 am »

Ya solucione el problema mil gracias a los que contestaron.

saludos.
En línea

Lo que se puede imaginar... se puede programar.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cola de impresion
Programación Visual Basic
Neobius 1 2,791 Último mensaje 26 Noviembre 2005, 01:10 am
por NYlOn
cola fifo
Programación C/C++
hbk50 1 3,625 Último mensaje 3 Junio 2010, 19:17 pm
por Eternal Idol
Pila & Cola
Programación C/C++
¡Micronet! 2 5,206 Último mensaje 23 Octubre 2010, 13:02 pm
por Saberuneko
pasar datos de una cola dinámica a otra cola...
Programación C/C++
include (); 4 9,528 Último mensaje 10 Agosto 2012, 10:01 am
por BlackZeroX
Problema con una Cola
Programación C/C++
vegasound 6 2,592 Último mensaje 9 Mayo 2014, 04:14 am
por Gh057
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines