
Problemas y dudas Thread e interfaces
Publicado por Rudd (1 intervención) el 09/09/2014 20:18:14
Primero que nada buenos dias,este es mi problema, tengo que hacer un cronometro usando obligatoriamente estas clases:
clase entidad= aqui se guardan las variables horas, minutos ,segundos junto con sus getters and setter.
clase vista = donde se crea la interfaz grafica del cronometro y aqui se implementa la interface
interface interfaz, con este se debe conectar la vista con la clase logica
clase logica = aqui se realizaran los calculos delcronometro y aqui se implementara runnable y la interface
Bien , se supone que en la vista se llamaran a los metodos de logica para usar los threads en logica y y asi calcule cada segundo que pase, pero para imprimirlos en lainterfaz debo mandarselo por medio de la interface a laclase entidad y que la vista los muestre en la interfaz grafica, pero esto mandando un objeto de entidad mediante la interface, sin embargo no se como hacer eso , no tengo ni la menor idea de como hacer de como mandar un objeto entidad a traves de la interface y que me lo muestre en interfaz grafica, ademas de que los threads no me estan funcionando tampoco, en fin.. gracias por su atencion.
Y aqui esta mi codigo:
package threads;
public class Main {
public static void main(String[] args) {
Vista croni=new Vista();
}
}
package threads;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Vista extends JFrame implements Interfaz {
Logica logica = new Logica();
Entidad entidad = new Entidad();
JLabel tiempo;
JButton iniciar;
JButton detener;
JButton reanudar;
JButton reiniciar;
public Vista()
{
setTitle("Super Cronometro");
setSize( 400, 150 );
setLocationRelativeTo(null);
setResizable(false);
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
setVisible(true);
tiempo = new JLabel( "00:00:00" );
tiempo.setFont( new Font( Font.SANS_SERIF, Font.BOLD,55));
tiempo.setHorizontalAlignment( JLabel.CENTER );
tiempo.setForeground( Color.BLACK );
add( tiempo, BorderLayout.NORTH);
final JButton iniciar = new JButton( "Iniciar" );
iniciar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
iniciar.setEnabled(false);
logica.iniciarCronometro();
}
});
JButton detener = new JButton( "Detener" );
detener.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
iniciar.setEnabled(true);
logica.detenerCronometro();
}
});
JButton reanudar = new JButton( "Reanudar" );
reanudar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
}
});
JButton reiniciar = new JButton( "Reiniciar" );
reiniciar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
}
});
JPanel panelBoton = new JPanel();
panelBoton.setLayout(new GridLayout(1,4,4,4));
panelBoton.add(iniciar);
panelBoton.add(detener);
panelBoton.add(reanudar);
panelBoton.add(reiniciar);
add(panelBoton, BorderLayout.CENTER);
}
public void segundero(Entidad logica) {
tiempo.setText(entidad.getHoras() +":"+
entidad.getMinutos() +":"+entidad.getSegundos());
}
}
package threads;
public interface Interfaz {
public void segundero(Entidad logica);
}
package threads;
public class Entidad {
private String segundos="00";
private String minutos="00";
private String horas="00";
public String getSegundos()
{
return segundos;
}
public void setSegundos(String segundos)
{
this.segundos = segundos;
}
public String getMinutos()
{
return minutos;
}
public void setMinutos(String minutos)
{
this.minutos=minutos;
}
public String getHoras()
{
return horas;
}
public void setHoras(String horas)
{
this.horas = horas;
}
}
package threads;
public class Logica implements Runnable,Interfaz{
boolean cronometroActivo;
Thread hilo;
int horas=0;
int min = 0;
int seg = 0;
String hora;
String minutos;
String segundos;
public void segundero(Entidad entidad) {
}
public void run() {
try
{
while(cronometroActivo)
{
System.out.println("a");
Thread.sleep(60000);
seg++;
if(seg == 60)
{
seg = 0;
min ++;
if(min == 60)
{
min=0;
horas++;
}
}
if(horas<10)
{
hora = "0"+ Integer.toString(horas);
}
else
{
hora = Integer.toString(horas);
}
if(min<10)
{
minutos = "0"+ Integer.toString(min);
}
else
{
segundos = Integer.toString(seg);
}
System.out.println(hora+":"+minutos+":"+segundos);
}
}catch(Exception e){
System.out.println(hora+":"+minutos+":"+segundos);
}
}
public void iniciarCronometro(){
cronometroActivo = true;
hilo = new Thread(new Logica());
//System.out.println("a");
hilo.start();
}
public void detenerCronometro()
{
cronometroActivo = false;
hora="0";
minutos="0";
segundos="0";
}
public void reiniciarCronometro()
{
hora="0";
minutos="0";
segundos="0";
cronometroActivo=true;
hilo = new Thread(this);
hilo.start();
}
public void pausarCronometro(){
cronometroActivo = false;
hilo = new Thread(this);
hilo.start();
}
}
clase entidad= aqui se guardan las variables horas, minutos ,segundos junto con sus getters and setter.
clase vista = donde se crea la interfaz grafica del cronometro y aqui se implementa la interface
interface interfaz, con este se debe conectar la vista con la clase logica
clase logica = aqui se realizaran los calculos delcronometro y aqui se implementara runnable y la interface
Bien , se supone que en la vista se llamaran a los metodos de logica para usar los threads en logica y y asi calcule cada segundo que pase, pero para imprimirlos en lainterfaz debo mandarselo por medio de la interface a laclase entidad y que la vista los muestre en la interfaz grafica, pero esto mandando un objeto de entidad mediante la interface, sin embargo no se como hacer eso , no tengo ni la menor idea de como hacer de como mandar un objeto entidad a traves de la interface y que me lo muestre en interfaz grafica, ademas de que los threads no me estan funcionando tampoco, en fin.. gracias por su atencion.
Y aqui esta mi codigo:
package threads;
public class Main {
public static void main(String[] args) {
Vista croni=new Vista();
}
}
package threads;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Vista extends JFrame implements Interfaz {
Logica logica = new Logica();
Entidad entidad = new Entidad();
JLabel tiempo;
JButton iniciar;
JButton detener;
JButton reanudar;
JButton reiniciar;
public Vista()
{
setTitle("Super Cronometro");
setSize( 400, 150 );
setLocationRelativeTo(null);
setResizable(false);
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
setVisible(true);
tiempo = new JLabel( "00:00:00" );
tiempo.setFont( new Font( Font.SANS_SERIF, Font.BOLD,55));
tiempo.setHorizontalAlignment( JLabel.CENTER );
tiempo.setForeground( Color.BLACK );
add( tiempo, BorderLayout.NORTH);
final JButton iniciar = new JButton( "Iniciar" );
iniciar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
iniciar.setEnabled(false);
logica.iniciarCronometro();
}
});
JButton detener = new JButton( "Detener" );
detener.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
iniciar.setEnabled(true);
logica.detenerCronometro();
}
});
JButton reanudar = new JButton( "Reanudar" );
reanudar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
}
});
JButton reiniciar = new JButton( "Reiniciar" );
reiniciar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
}
});
JPanel panelBoton = new JPanel();
panelBoton.setLayout(new GridLayout(1,4,4,4));
panelBoton.add(iniciar);
panelBoton.add(detener);
panelBoton.add(reanudar);
panelBoton.add(reiniciar);
add(panelBoton, BorderLayout.CENTER);
}
public void segundero(Entidad logica) {
tiempo.setText(entidad.getHoras() +":"+
entidad.getMinutos() +":"+entidad.getSegundos());
}
}
package threads;
public interface Interfaz {
public void segundero(Entidad logica);
}
package threads;
public class Entidad {
private String segundos="00";
private String minutos="00";
private String horas="00";
public String getSegundos()
{
return segundos;
}
public void setSegundos(String segundos)
{
this.segundos = segundos;
}
public String getMinutos()
{
return minutos;
}
public void setMinutos(String minutos)
{
this.minutos=minutos;
}
public String getHoras()
{
return horas;
}
public void setHoras(String horas)
{
this.horas = horas;
}
}
package threads;
public class Logica implements Runnable,Interfaz{
boolean cronometroActivo;
Thread hilo;
int horas=0;
int min = 0;
int seg = 0;
String hora;
String minutos;
String segundos;
public void segundero(Entidad entidad) {
}
public void run() {
try
{
while(cronometroActivo)
{
System.out.println("a");
Thread.sleep(60000);
seg++;
if(seg == 60)
{
seg = 0;
min ++;
if(min == 60)
{
min=0;
horas++;
}
}
if(horas<10)
{
hora = "0"+ Integer.toString(horas);
}
else
{
hora = Integer.toString(horas);
}
if(min<10)
{
minutos = "0"+ Integer.toString(min);
}
else
{
segundos = Integer.toString(seg);
}
System.out.println(hora+":"+minutos+":"+segundos);
}
}catch(Exception e){
System.out.println(hora+":"+minutos+":"+segundos);
}
}
public void iniciarCronometro(){
cronometroActivo = true;
hilo = new Thread(new Logica());
//System.out.println("a");
hilo.start();
}
public void detenerCronometro()
{
cronometroActivo = false;
hora="0";
minutos="0";
segundos="0";
}
public void reiniciarCronometro()
{
hora="0";
minutos="0";
segundos="0";
cronometroActivo=true;
hilo = new Thread(this);
hilo.start();
}
public void pausarCronometro(){
cronometroActivo = false;
hilo = new Thread(this);
hilo.start();
}
}
Valora esta pregunta


0