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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 [8] 9 10
71  Programación / Java / Re: Mi SwingWorker no se cancela en: 29 Agosto 2013, 16:58 pm
Bueno con el cambio que has echo en el anterior post, si que funciona cuando coinciden las dos horas, el cancelar, sigue como siempre, pero ya lo mirare con mas calma, quien quiera probar el código copy and paste.

Un saludo y gracias.
72  Programación / Java / Re: Mi SwingWorker no se cancela en: 29 Agosto 2013, 16:33 pm
Bueno pues te dejo el código aqui a ver si a ti te funciona, yo ya estoy perdiendo los nervios.

Código
  1. package base;
  2.  
  3. import gui.Gui;
  4.  
  5. import javax.swing.SwingUtilities;
  6.  
  7. public class Main {
  8.  
  9. public static void main(String[] args) {
  10. SwingUtilities.invokeLater(new Runnable(){
  11. public void run(){
  12. new Gui();
  13. }
  14. });
  15. }
  16. }
  17.  

Código
  1. package gui;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Container;
  5. import java.awt.GridBagConstraints;
  6. import java.awt.GridBagLayout;
  7. import java.awt.Insets;
  8. import java.awt.event.ActionEvent;
  9. import java.awt.event.ActionListener;
  10. import java.sql.Time;
  11.  
  12. import javax.swing.JButton;
  13. import javax.swing.JComboBox;
  14. import javax.swing.JFrame;
  15.  
  16. import base.CheckTime;
  17.  
  18. public class Gui extends JFrame implements ActionListener{
  19. private int width = 370,height = 150;
  20. private String windowTitle = "ShutdownProgramer";
  21. private String textButtonProgram = "Program shutdown";
  22. private String textButtonCancel = "Cancel shutdown";
  23. private int maxHour = 24,maxMin = 60,maxSec = 60;
  24. private JComboBox<Integer> hour = new JComboBox<Integer>();
  25. private JComboBox<Integer> min = new JComboBox<Integer>();
  26. private JComboBox<Integer> sec = new JComboBox<Integer>();
  27. private JButton programShutdown = new JButton(textButtonProgram);
  28. private JButton cancelShutdown = new JButton(textButtonCancel);
  29. private boolean isStarted = false;
  30. public Gui(){
  31. setSize(width,height);
  32. setTitle(windowTitle);
  33. setLocationRelativeTo(null);
  34. setResizable(false);
  35. setDefaultCloseOperation(EXIT_ON_CLOSE);
  36. setLayout(new GridBagLayout());
  37. configureJComboBoxes();
  38. configureJButton();
  39. setVisible(true);
  40. }
  41.  
  42. public void addComponentGBL(Container container, Component component, int gridx, int gridy, int gridwidth, int gridheight, int anchor, int fill, int inset1, int inset2, int inset3, int inset4) {
  43. Insets insets = new Insets(inset1, inset2, inset3, inset4);
  44. GridBagConstraints gbc = new GridBagConstraints(gridx, gridy, gridwidth, gridheight, 1.0, 1.0, anchor, fill, insets, 0, 0);
  45.    container.add(component, gbc);
  46.  }
  47.  
  48. public void configureJComboBoxes(){
  49. for(int i = 0; i < maxHour; i++)
  50. hour.addItem(i);
  51. for(int i = 0; i < maxMin; i++)
  52. min.addItem(i);
  53. for(int i = 0; i < maxSec; i++)
  54. sec.addItem(i);
  55.  
  56. addComponentGBL(this,hour,0,0,1,0,GridBagConstraints.CENTER, GridBagConstraints.CENTER, 0, 90, 40, 0);
  57. addComponentGBL(this,min,1,0,1,0,GridBagConstraints.CENTER, GridBagConstraints.CENTER, 0, 0, 40, 0);
  58. addComponentGBL(this,sec,2,0,1,0,GridBagConstraints.CENTER, GridBagConstraints.CENTER, 0, 0, 40, 90);
  59. }
  60.  
  61. public void configureJButton(){
  62. addComponentGBL(this,programShutdown,0,0,0,0,GridBagConstraints.CENTER, GridBagConstraints.CENTER, 40, 0, 0, 150);
  63. addComponentGBL(this,cancelShutdown,0,0,0,0,GridBagConstraints.CENTER, GridBagConstraints.CENTER, 40, 150, 0, 0);
  64. programShutdown.addActionListener(this);
  65. cancelShutdown.addActionListener(this);
  66. }
  67.  
  68.    public void actionPerformed(ActionEvent evt) {
  69.    CheckTime time = new CheckTime(hour.getSelectedIndex(), min.getSelectedIndex(), sec.getSelectedIndex());
  70.    if(evt.getSource() == programShutdown && isStarted == false){
  71.    System.out.println("iniciado!");
  72.    time.execute();
  73.    isStarted = true;
  74.    } else if(evt.getSource() == cancelShutdown && isStarted == true){
  75.    System.out.println("cancelado!");
  76.    time.stopThread();
  77.    isStarted = false;
  78.    }
  79.  
  80.    }
  81.  
  82. }
  83.  

Código
  1. package base;
  2.  
  3. import java.util.Calendar;
  4.  
  5. import javax.swing.SwingWorker;
  6.  
  7. public class CheckTime extends SwingWorker<Object, Object> {
  8.  
  9. private int copyHour;
  10. private int copyMin;
  11. private int copySec;
  12. private boolean running;
  13.  
  14. public CheckTime(int hour, int min, int sec) {
  15. copyHour = hour;
  16. copyMin = min;
  17. copySec = sec;
  18. }
  19.  
  20. protected Object doInBackground() throws Exception {
  21. Calendar calendario;
  22.  
  23. int thisHour;
  24. int thisMin;
  25. int thisSec;
  26.  
  27. this.running = true;
  28.  
  29. System.out.println("iniciado!");
  30.  
  31. do {
  32. calendario = Calendar.getInstance();
  33. thisHour = calendario.get(Calendar.HOUR_OF_DAY);
  34. thisMin = calendario.get(Calendar.MINUTE);
  35. thisSec = calendario.get(Calendar.SECOND);
  36.  
  37. System.out.println("funcionando: " + thisHour + ":" + thisMin + ":" + thisSec);
  38.  
  39. if (copyHour == thisHour && copyMin == thisMin && copySec == thisSec) {
  40. this.running = false;
  41. }
  42.  
  43. try {
  44. Thread.sleep(1000);
  45. } catch (InterruptedException e) {
  46. System.out.println("Thread sleep de ChekcHour a fallado");
  47. }
  48. } while (this.running);
  49.  
  50. System.out.println("APAGATE!");
  51. return null;
  52. }
  53.  
  54. public void stopThread() {
  55. this.running = false;
  56. }
  57. }

Un saludo.
73  Programación / Java / Re: Duda sobre cómo estructurar un programa con el paradigma POO en java? en: 29 Agosto 2013, 16:27 pm
Hay lo llevas, no se si estará totalmente bien, pero espero que almenos te ayude:

Código
  1. public class Main {
  2.  
  3. public static void main(String[] args) {
  4. new Control();
  5. }
  6.  
  7. }
  8.  

Código
  1. import java.util.Scanner;
  2.  
  3.  
  4. public class Control {
  5.  
  6. int arraySize = 10;
  7. pasajero array[] = new pasajero[arraySize];
  8. Scanner entradaEstandar= new Scanner(System.in);
  9.  
  10. public Control(){
  11. menu();
  12. }
  13.  
  14. public void menu(){
  15. int op=0;
  16.  
  17. System.out.println("Programa de de control de Vuelo");
  18. do
  19.      {
  20.        System.out.println("Seleccione una opcion o presione '0' para salir");
  21.        System.out.println("\n\n (1) Agregar Pasajero");
  22.        System.out.println("\n (2) Eliminar Pasajero");
  23.        System.out.println("\n (3) Ver lista de los pasajeros");
  24.        op=entradaEstandar.nextInt();
  25.        switch(op)
  26.            {
  27.            case 1:                      
  28.                agregar();
  29.                break;
  30.            case 2:  
  31.             eliminar();
  32.                break;
  33.            case 3:  
  34.                mostrarTodo();
  35.                break;
  36.            }
  37.      }while(op!=0);
  38. }
  39.  
  40. public void agregar(){
  41. int index = checkPassenger();
  42. boolean dniDoubled;
  43. array[index] = new pasajero();
  44. do {
  45. dniDoubled = false;
  46. array[index].setDni();
  47. for(int i = 0; i < arraySize; i++){
  48. if(array[i] != null)
  49. if(array[index].getDni().equals(array[i].getDni()) && i!=index){
  50. System.out.println("El DNI introducido ya existe, vuelva a intentarlo");
  51. dniDoubled = true;
  52. }
  53. }
  54. } while(dniDoubled != false);
  55. array[index].setNombre();
  56. array[index].setOrigen();
  57. array[index].setDestino();
  58. array[index].setHora_llegada();
  59. System.out.println("Pasajero agregado");
  60. }
  61.  
  62. public int checkPassenger(){
  63. int i = 0;
  64. for(i = 0; i < arraySize; i++){
  65. if(array[i]==null)
  66. return i;
  67. }
  68. if(i == arraySize){
  69. System.out.println("Array llena, no se pueden dar de alta mas pasajeros");
  70. menu();
  71. }
  72. return i;
  73. }
  74.  
  75. public void eliminar(){
  76. boolean noResultsFound = true;
  77. String dni;
  78. System.out.println("Escriba el DNI del pasajero:\n");
  79. dni = entradaEstandar.next();
  80. for(int i = 0; i < arraySize-1; i++){
  81. System.out.println(i);
  82. if(array[i] != null)
  83. if(array[i].getDni().equals(dni)){
  84. array[i] = null;
  85. noResultsFound = false;
  86. }
  87. }
  88. if(noResultsFound){
  89. System.out.println("No se encontraron coincidencias");
  90. } else if(!noResultsFound){
  91. System.out.println("Pasajero borrado");
  92. }
  93. }
  94.  
  95. public void mostrarTodo(){
  96. boolean noResultsFound = true;
  97. for(int i = 0; i < arraySize; i++){
  98. if(array[i]!=null){
  99. System.out.println("----------------------");
  100. System.out.println("-- Pasajero "+i+1+" --");
  101. System.out.println(array[i].getDni());
  102. System.out.println(array[i].getNombre());
  103. System.out.println(array[i].getOrigen());
  104. System.out.println(array[i].getDestino());
  105. System.out.println(array[i].getHora_llegada());
  106. noResultsFound = false;
  107. }
  108. }
  109. if(noResultsFound == true){
  110. System.out.println("No se han encontrado pasajeros");
  111. }
  112. }
  113.  
  114. }

Código
  1. import java.io.*;
  2. import java.util.*;
  3. public class pasajero
  4. {
  5.    // instance variables - replace the example below with your own
  6.    private String dni;
  7. private String nombre;
  8.    private String hora_llegada;
  9.    private String destino;
  10.    private String origen;
  11.    private Scanner entradaEstandar= new Scanner(System.in);
  12.  
  13.    /**
  14.      * Constructor for objects of class pasajero
  15.      */
  16.    public pasajero()
  17.    {
  18.        // initialise instance variables
  19.     dni="";
  20.        nombre="";
  21.        hora_llegada="";
  22.        destino="";
  23.        origen="";
  24.    }
  25.  
  26.    public String getDni()
  27.    {
  28.        return dni;
  29.    }
  30.    public void setDni()
  31.    {
  32.     System.out.println("Escriba el DNI del pasajero:\n");
  33.        dni = entradaEstandar.nextLine();
  34.    }
  35.  
  36.    public String getNombre()
  37.    {
  38.        return nombre;
  39.    }
  40.    public void setNombre()
  41.    {
  42.     System.out.println("Escriba el nombre del pasajero:\n");
  43.        nombre = entradaEstandar.nextLine();
  44.    }
  45.  
  46.     public String getHora_llegada()
  47.    {
  48.        return hora_llegada;
  49.    }
  50.    public void setHora_llegada()
  51.    {
  52.     System.out.println("Ingresa la hora de arribo:\n");
  53.        hora_llegada = entradaEstandar.nextLine();
  54.    }
  55.      public String getDestino()
  56.    {
  57.        return destino;
  58.    }
  59.    public void setDestino()
  60.    {
  61.     System.out.println("Escriba el destino:\n");
  62.        destino = entradaEstandar.nextLine();
  63.    }
  64.      public String getOrigen()
  65.    {
  66.        return origen;
  67.    }
  68.    public void setOrigen()
  69.    {
  70.     System.out.println("Escriba el origen:\n");
  71.        origen = entradaEstandar.nextLine();
  72.    }
  73.  
  74.    public String toString() {
  75.        StringBuilder sb = new StringBuilder();
  76.        sb.append("\nNombre: ");
  77.        sb.append(nombre);
  78.        sb.append("\nHora Llegada: ");
  79.        sb.append(hora_llegada);
  80.        sb.append("\nDestino: ");
  81.        sb.append(destino);
  82.        sb.append("\nOrigen: ");
  83.        sb.append(origen);    
  84.        return sb.toString();
  85.    }    
  86. }

Te recomiendo que siempre que trabajes con registros asignes una variable que sepas que siempre será única para cada registro como por ejemplo el DNI o un código númerico, a la hora de hacer algoritmos de busqueda sobretodo te resultara más fácil.
74  Programación / Java / Re: Mi SwingWorker no se cancela en: 29 Agosto 2013, 16:18 pm
Es decir que según tu razonamiento, si yo introduzco por ejemplo las 12:56:00 y el Calendar me coge 11:55:00, se me saldra del bucle ya que con que solo uno de los 3 digitos sea igual a el introducido se marchara, eso no es lo que quiero, quiero que salga del bucle, en dos casos, o que yo le de a cancelar, para eso esta el running, o que la hora que yo introduzca sea igual a la que me coja el Calendar.

Un saludo.
75  Programación / Java / Re: Mi SwingWorker no se cancela en: 29 Agosto 2013, 15:10 pm
Respecto a lo primero, porque no te e puesto todo el código  :silbar:.
Y lo segundo, bueno si te refieres a:

Código
  1. calendario = Calendar.getInstance();

Es debido a que a cada segundo quiero saber la hora, y la hora la extrae este comando, si lo pusiese fuera solo sabría la hora de el momento que le doy al botón, o eso entendi cuando lo estuve investigando.

si por otra parte te refieres a esto:

Código
  1. Calendar calendario;

Si, podría haberlo declarado arriba...

Agradezco el esfuerzo por un noob como yo  :)
76  Programación / Java / Re: Mi SwingWorker no se cancela en: 29 Agosto 2013, 14:41 pm
Ciertamente nunca saldrá, pero ahora mismo acabo de copiar y pegar tu código, cuando llega la hora que e asigando en los jcombobox tendría que salir del bucle y printar apagate, y no me lo printa, es decir que no sale del bucle, y al darle a cacelar estoy en las mismas tampoco me sale.

En el que hice almenos me apagaba el ordenador, agradecería que me explicases un poco como funciona tu código, de mientras iré buscando mas documentación sobre threads.

Un saludo y gracias.

EDITO: Ese erro ya lo corregí, era obvio, pero yo sigo sin verlo...
77  Programación / Java / Re: Mi SwingWorker no se cancela en: 29 Agosto 2013, 13:44 pm
Bueno si no te importa e hecho unos cambios ya que si no nunca salia del bucle al llegar la hora, así cuando llega a la hora si que sale del bucle y "apaga el ordenador", pero e estado observando la variable running, y aún cambiandola desde el método, parece que el SwingWorker la sigue teniendo en true.

Código
  1. package base;
  2.  
  3. import java.util.Calendar;
  4.  
  5. import javax.swing.SwingWorker;
  6.  
  7. public class CheckTime extends SwingWorker{
  8. private int copyHour;
  9. private int copyMin;
  10. private int copySec;
  11. private boolean running;
  12. public  CheckTime(int hour,int min, int sec){
  13. copyHour = hour;
  14. copyMin = min;
  15. copySec = sec;
  16. }
  17.  
  18. protected Object doInBackground() throws Exception {
  19. Calendar calendario;
  20. int thisHour;
  21. int thisMin;
  22. int thisSec;
  23. System.out.println("iniciado!");
  24. this.running = true;
  25.  
  26. do{
  27. calendario = Calendar.getInstance();
  28. thisHour = calendario.get(Calendar.HOUR_OF_DAY);
  29. thisMin = calendario.get(Calendar.MINUTE);
  30. thisSec = calendario.get(Calendar.SECOND);
  31. try {
  32. Thread.sleep(1000);
  33. } catch (InterruptedException e) {
  34. System.out.println("Thread sleep de ChekcHour a fallado");
  35. }
  36. System.out.println(running);
  37. if(this.running == false){
  38. System.out.println("E cancelado el thread");
  39. }
  40. }while(copyHour != thisHour || copyMin != thisMin || copySec != thisSec);
  41. System.out.println("APAGATE!");
  42. return null;
  43. }
  44.  
  45. public void stopThread() {
  46. System.out.println("Estoy en stop y e puesto running a false");
  47. running = false;
  48. System.out.println("running = "+running);
  49. }
  50.  
  51. }

Me explicaré mejor, enciendo el thread y en el bucle va printando true, el thread está encendido, le doy a cancelar, y en un println en el método de cancelar, veo como se cambia el valor de running, pero en el bucle que aún esta en marcha, continua printando true.

Un saludo y gracias.
78  Programación / Java / Re: Duda sobre cómo estructurar un programa con el paradigma POO en java? en: 29 Agosto 2013, 13:15 pm
Si lo haces como dice Fakedoor no tendras que crear métodos static, y si ciertamente te quedara bastante mas limpio.

en la main solo tendrías que poner la instancia de la class "GestiónPasajero".

Un saludo.
79  Programación / Java / Re: Duda sobre cómo estructurar un programa con el paradigma POO en java? en: 29 Agosto 2013, 10:19 am
Bueno pues deberías hacer lo siguiente:

En la class pasajero, en cada uno de los métodos que son set, no le pasarías nada por parámetro y a la variable nombre, por ejemplo le asignarías un valor recogido por teclado, un ejemplo con tu metodo de la class pasajero:

Código
  1. public void setNombre()
  2.    {
  3. Scanner entradaEstandar= new Scanner(System.in);
  4. System.out.println("Escriba el nombre del pasajero:\n");
  5. nombre=entradaEstandar.nextLine();
  6.    }

Entonces teniendo esto así configurado, en tu class Control, para poder asignar un nombre unicamente tendrias que llamar a este metodo así:

Código
  1. array[0].setNombre();
  2. array[1].setNombre();
  3. array[2].setNombre();
  4. array[3].setNombre();

Espero lo hayas entendido, un saludo.
80  Programación / Java / Mi SwingWorker no se cancela en: 29 Agosto 2013, 10:07 am
Bien estoy puliendo una aplicación de shutdown y me e quedado atascado en un lugar.

Tengo el siguiente método que recoge los eventos de dos botones, cuando le doy a programar el apagado me inicia la variable time cogiendome los valores de tres JComboBox, time, es un SwingWorker que revisa la hora, supuestamente cuando yo le diese a cancelar, con el comando time.cancel(true) me tendría que detener el thread, pero no es así:

Código
  1. public void actionPerformed(ActionEvent evt) {
  2. CheckTime time = new CheckTime(hour.getSelectedIndex(), min.getSelectedIndex(), sec.getSelectedIndex());
  3. if(evt.getSource() == programShutdown && isStarted == false){
  4. System.out.println("iniciado!");
  5. time.execute();
  6. isStarted = true;
  7. } else if(evt.getSource() == cancelShutdown && isStarted == true){
  8. System.out.println("cancelado!");
  9. time.cancel(true);
  10. isStarted = false;
  11. }
  12.  
  13. }

Código
  1. package base;
  2.  
  3. import java.util.Calendar;
  4.  
  5. import javax.swing.SwingWorker;
  6.  
  7. public class CheckTime extends SwingWorker{
  8. private int copyHour;
  9. private int copyMin;
  10. private int copySec;
  11. public  CheckTime(int hour,int min, int sec){
  12. copyHour = hour;
  13. copyMin = min;
  14. copySec = sec;
  15. }
  16.  
  17. protected Object doInBackground() throws Exception {
  18. Calendar calendario;
  19. int thisHour;
  20. int thisMin;
  21. int thisSec;
  22. System.out.println("iniciado!");
  23. do{
  24. calendario = Calendar.getInstance();
  25. thisHour = calendario.get(Calendar.HOUR_OF_DAY);
  26. thisMin = calendario.get(Calendar.MINUTE);
  27. thisSec = calendario.get(Calendar.SECOND);
  28. try {
  29. Thread.sleep(1000);
  30. } catch (InterruptedException e) {
  31. System.out.println("Thread sleep de ChekcHour a fallado");
  32. }
  33. }while(copyHour != thisHour || copyMin != thisMin || copySec != thisSec);
  34. System.out.println("APAGATE!");
  35. return null;
  36. }
  37.  
  38. }
  39.  

Sospecho que puede ser, que como yo genero un new time, cada vez que le de o a cancel o a programar, al darle a cancel me cancela el que genera cancel, pero no el anterior que genere con el program, pero bueno quiero escuchar segundas opiniones.

Un saludo y gracias de antemano.
Páginas: 1 2 3 4 5 6 7 [8] 9 10
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines