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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  ayuda con hilos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda con hilos  (Leído 5,530 veces)
luisdoros

Desconectado Desconectado

Mensajes: 3


Ver Perfil
ayuda con hilos
« en: 14 Julio 2012, 16:57 pm »

necesito ayuda con un programa en java es para mi proyecto final se trata de una carrera de n hilos definidos por el usuario los cuales tienen un avance aleatorio se ejemplifica mejor con el siguiente código:

package hipodromo;

import java.awt.*;
import javax.swing.JFrame;
import javax.swing.*;

class Caballo extends Thread
{
    JProgressBar caballo;
   
    public Caballo(JProgressBar jp)
    {
        this.caballo=jp;
    }
    public void run()
    {
        int avanse =0;
            while (avanse<100)
            {
                try
                {
                    avanse+=(int)(Math.random()*10);
                    caballo.setValue(avanse);
                    sleep((long)(Math.random()*1000));
                }
                catch (InterruptedException e)
                {
                   
                }
            }
    }
}
       
public class Hipodromo extends JFrame
{
    JPanel pista;
    JLabel[] nombres=new JLabel[10];
    JProgressBar []participantes =new JProgressBar[10];
   
    public Hipodromo()
    {
        super ("HIPODROMO LAS AMERICAS");
       
        pista =new JPanel();
        pista.setLayout(new GridLayout(10,2));
        for (int i=0;i<10;i++)
        {
            nombres=new JLabel("caballo "+i);
            pista.add(nombres);
            participantes = new JProgressBar();
            pista.add(participantes);
        }
        this.add(pista);
        this.pack();
        this.setVisible(true);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
    public static void main(String[] args)
    {
      Hipodromo obj=new Hipodromo(); 
      for(int i=0;i<obj.participantes.length;i++)
      {
          new Caballo(obj.participantes).start();
      }
    }
}

la idea es hacerlo y no con jprogress sino con un jlabel o algo similar, y con imágenes espero y me puedan ayudar.


En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: ayuda con hilos
« Respuesta #1 en: 17 Julio 2012, 02:21 am »

He hecho esto rapido, lo cual requerirá quizás que hagas algunos ajustes:

CaballosForm.java:

Código
  1. import java.awt.EventQueue;
  2. import javax.swing.JFrame;
  3. import javax.swing.JLabel;
  4. import javax.swing.JTextField;
  5. import javax.swing.JButton;
  6. import java.awt.event.ActionListener;
  7. import java.awt.event.ActionEvent;
  8.  
  9. public class CaballosForm {
  10.  
  11. private JFrame frmCaballos;
  12. private JTextField numeroTxt;
  13. // TODO ...
  14. private HiloCaballo []hiloCaballos = null;
  15.  
  16. public static void main(String[] args) {
  17. EventQueue.invokeLater(new Runnable() {
  18. public void run() {
  19. try {
  20. CaballosForm window = new CaballosForm();
  21. window.frmCaballos.setVisible(true);
  22. } catch (Exception e) {
  23. e.printStackTrace();
  24. }
  25. }
  26. });
  27. }
  28.  
  29. public CaballosForm() {
  30. initialize();
  31. }
  32.  
  33. private void initialize() {
  34.  
  35. frmCaballos = new JFrame();
  36. frmCaballos.setTitle("Caballos");
  37. frmCaballos.setBounds(100, 100, 450, 300);
  38. frmCaballos.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  39. frmCaballos.getContentPane().setLayout(null);
  40.  
  41. JLabel lblNewLabel = new JLabel("Caballos");
  42. lblNewLabel.setDisplayedMnemonic('C');
  43. lblNewLabel.setBounds(12, 12, 70, 15);
  44. frmCaballos.getContentPane().add(lblNewLabel);
  45.  
  46. numeroTxt = new JTextField();
  47. lblNewLabel.setLabelFor(numeroTxt);
  48. numeroTxt.setBounds(104, 10, 114, 19);
  49. frmCaballos.getContentPane().add(numeroTxt);
  50. numeroTxt.setColumns(10);
  51.  
  52. JButton btnNewButton = new JButton("Ok");
  53. btnNewButton.addActionListener(new ActionListener() {
  54. public void actionPerformed(ActionEvent arg0) {
  55.  
  56. int n = Integer.parseInt(numeroTxt.getText());
  57. int y_factor = 39;
  58. hiloCaballos  = new HiloCaballo[n];
  59. for(int i = 0; i < n; i++) {
  60. hiloCaballos[i] = new HiloCaballo();
  61. hiloCaballos[i].start();
  62. hiloCaballos[i].getCaballo().setBounds(12, y_factor, 256, 14);
  63. frmCaballos.getContentPane().add(hiloCaballos[i].getCaballo());
  64. y_factor += 15;
  65. }
  66.  
  67. frmCaballos.revalidate();
  68. frmCaballos.pack();
  69. frmCaballos.setBounds(100, 100, 450, 300);
  70.  
  71. }
  72. });
  73. btnNewButton.setMnemonic('O');
  74. btnNewButton.setBounds(230, 7, 117, 25);
  75. frmCaballos.getContentPane().add(btnNewButton);
  76.  
  77. JButton btnStop = new JButton("Stop");
  78. btnStop.addActionListener(new ActionListener() {
  79. public void actionPerformed(ActionEvent arg0) {
  80.  
  81. for(int i = 0; i < Integer.parseInt(numeroTxt.getText()); i++) {
  82. hiloCaballos[i].detenerHilo();
  83. }
  84.  
  85. }
  86. });
  87. btnStop.setBounds(364, 7, 70, 25);
  88. frmCaballos.getContentPane().add(btnStop);
  89. }
  90. }
  91.  

HiloCaballo.java:

Código
  1. import javax.swing.JProgressBar;
  2.  
  3. public class HiloCaballo extends Thread {
  4.  
  5. private boolean stopFlag = false;
  6. private JProgressBar progressCaballo = null;
  7.  
  8. public HiloCaballo() {
  9. progressCaballo = new JProgressBar();
  10. progressCaballo.setValue(0);
  11. }
  12.  
  13. public JProgressBar getCaballo() {
  14. return progressCaballo;
  15. }
  16.  
  17. @Override
  18. public void run() {
  19. while(!stopFlag) {
  20. progressCaballo.setValue((int)(Math.random() * 100.0));
  21. try {
  22. Thread.sleep(1000);
  23. } catch (InterruptedException e) {
  24. throw new RuntimeException(e.getMessage());
  25. }
  26. }
  27. }
  28.  
  29. public void detenerHilo() {
  30. stopFlag = true;
  31. }
  32.  
  33. }
  34.  


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Ayuda] Hilos - basico
Programación C/C++
bemone 4 2,560 Último mensaje 20 Junio 2013, 20:55 pm
por bemone
Ayuda con ejercicio de Hebras/Hilos y semaforos
Programación C/C++
Lotux5 0 1,839 Último mensaje 26 Octubre 2013, 21:14 pm
por Lotux5
AYUDA: Practicando con hilos en Windows
Programación C/C++
t4r0x 1 1,866 Último mensaje 20 Febrero 2015, 15:13 pm
por _Enko
Ayuda con hilos en C « 1 2 »
Programación C/C++
snake_linux 14 5,890 Último mensaje 28 Agosto 2015, 00:06 am
por snake_linux
Ayuda con hilos en C
Programación C/C++
codX 3 3,128 Último mensaje 15 Febrero 2020, 18:40 pm
por RayR
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines