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
| | | |-+  interfaz grafica, eventos, hilos y stocks
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: interfaz grafica, eventos, hilos y stocks  (Leído 2,318 veces)
m@o_614


Desconectado Desconectado

Mensajes: 389


Ver Perfil
interfaz grafica, eventos, hilos y stocks
« en: 7 Marzo 2015, 01:52 am »

Saludos

he estado estudiando sobre hilos, interfaces graficas y eventos de boton, en practicas anteriores los habia programado por separado, pero en esta práctica tengo que usar tanto hilos, como interfaces, eventos, etc... Los requerimientos de la practica son:

1. Mostrar un área de texto
2. Mostrar una etiqueta "IP" seguida de un campo de texto a la derecha
3. Mostrar una etiqueta "mensaje" seguida de un campo de texto a la derecha
4. Mostrar un botón con la etiqueta "enviar"
5. Programar un Thread(como clase interna o externa a la clase Chat)
6. El hilo anterior se quede bloqueado a la espera de mensajes(como en Receptor.java)
7. El hilo imprima en el área de texto la IP de donde provenga el mensaje
8. Para la IP, se imprima sin la "/" usando el método getHostAdress() en lugar de toString()
9. El hilo imprima en el área de texto el contenido del mensaje que llegue
10. Realizar los puntos 7 al 10 para todo mensaje que llegue
11. Se puede probar la parte receptora de su chat si escucha al mismo puerto que el ejemplo
Receptor.java y se usa al Emisor.java para enviarle mensaje a su máquina.
12. Tras presionar el botón se obtenga el contenido del "campo IP" y del "campoMensaje"
13. Despues del paso anterior se inicien las instrucciones para emisión de mensaje por la red
(como en Emisor.java) usando los datos obtenidos del punto anterior.

ya tengo hecha la interfaz, y la clase Emisor y Receptor (que son las que envian los mensajes), el problema es que no se como manejar el hilo y las clases Emisor y Receptor en el codigo

Código
  1. import javax.swing.*;
  2. import javax.swing.GroupLayout.Alignment;
  3. import javax.swing.LayoutStyle.ComponentPlacement;
  4.  
  5. import java.awt.event.ActionEvent;
  6. import java.awt.event.ActionListener;
  7.  
  8. class Hilo extends Thread{
  9. private boolean puedeImprimir = true;
  10. private JTextArea areaTexto;
  11. private JTextField campoMensaje;
  12.  
  13. Hilo(JTextArea cuadroTexto,JTextField campoTexto1){
  14. areaTexto = cuadroTexto;
  15. campoMensaje = campoTexto1;
  16. }
  17.  
  18. public void ocurrioBotonazo()
  19. {
  20. if(puedeImprimir)
  21.   this.puedeImprimir = false;
  22. else
  23.   this.puedeImprimir = true;
  24. }
  25.  
  26. public void run()
  27. {
  28. //?????
  29. }
  30. }
  31.  
  32. class Interfaz extends JFrame implements ActionListener{
  33. private Hilo hilo;
  34. private GroupLayout marco;
  35. private JButton boton;
  36. private JLabel IP,mensaje;
  37. private JTextArea areaTexto;
  38. private JTextField campoIP,campoMensaje;
  39.  
  40. Interfaz(){
  41. marco = new GroupLayout(getContentPane());
  42. getContentPane().setLayout(marco);
  43.  
  44. boton = new JButton("enviar");
  45. IP = new JLabel("IP");
  46. mensaje = new JLabel("mensaje");
  47. areaTexto = new JTextArea();
  48. campoIP = new JTextField();
  49. campoMensaje = new JTextField();
  50. hilo = new Hilo(areaTexto,campoMensaje);
  51.  
  52. boton.addActionListener(this);
  53.  
  54. marco.setHorizontalGroup(
  55. marco.createParallelGroup(Alignment.LEADING)
  56. .addGroup(marco.createSequentialGroup()
  57. .addContainerGap()
  58. .addGroup(marco.createParallelGroup(Alignment.TRAILING)
  59. .addGroup(marco.createSequentialGroup()
  60. .addComponent(areaTexto, GroupLayout.DEFAULT_SIZE, 414, Short.MAX_VALUE)
  61. .addContainerGap())
  62. .addGroup(marco.createSequentialGroup()
  63. .addGroup(marco.createParallelGroup(Alignment.TRAILING)
  64. .addComponent(mensaje)
  65. .addComponent(IP))
  66. .addPreferredGap(ComponentPlacement.UNRELATED)
  67. .addGroup(marco.createParallelGroup(Alignment.LEADING, false)
  68. .addComponent(campoIP)
  69. .addComponent(campoMensaje, GroupLayout.DEFAULT_SIZE, 274, Short.MAX_VALUE))
  70. .addGap(43))))
  71. .addGroup(marco.createSequentialGroup()
  72. .addGap(185)
  73. .addComponent(boton)
  74. .addContainerGap(186, Short.MAX_VALUE))
  75. );
  76.  
  77. marco.setVerticalGroup(
  78. marco.createParallelGroup(Alignment.LEADING)
  79. .addGroup(marco.createSequentialGroup()
  80. .addContainerGap()
  81. .addComponent(areaTexto, GroupLayout.PREFERRED_SIZE, 85, GroupLayout.PREFERRED_SIZE)
  82. .addGap(18)
  83. .addGroup(marco.createParallelGroup(Alignment.BASELINE)
  84. .addComponent(campoIP, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
  85. .addComponent(IP))
  86. .addPreferredGap(ComponentPlacement.UNRELATED)
  87. .addGroup(marco.createParallelGroup(Alignment.BASELINE)
  88. .addComponent(mensaje)
  89. .addComponent(campoMensaje, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
  90. .addGap(30)
  91. .addComponent(boton)
  92. .addContainerGap(43, Short.MAX_VALUE))
  93. );
  94. }
  95.  
  96. public void actionPerformed(ActionEvent e) {
  97. hilo.ocurrioBotonazo();
  98.  
  99. }
  100. }
  101.  
  102. public class ChatUDP {
  103.  
  104. public static void main(String[] args) {
  105. Interfaz interfaz = new Interfaz();
  106. interfaz.setBounds(100, 100, 450, 300);
  107. interfaz.setTitle("ChatUDP");
  108. interfaz.setVisible(true);
  109. }
  110. }
  111.  

Código
  1. import java.net.DatagramSocket;
  2. import java.net.DatagramPacket;
  3. import java.net.SocketException;
  4. import java.net.InetAddress;
  5. import java.net.UnknownHostException;
  6. import java.io.IOException;
  7. import javax.swing.*;
  8.  
  9. public class Emisor {
  10. DatagramSocket emisionSocket;
  11. DatagramPacket paquete;
  12. String IP;
  13. byte[] mensaje;
  14.  
  15. Emisor(JTextField campoMensaje,JTextField campoIP){
  16. mensaje = campoMensaje.getText().getBytes();
  17. IP = campoIP.getText();
  18. }
  19.  
  20. public void main(JTextField campoMensaje,JTextField campoIP) {
  21. try
  22. {
  23. emisionSocket = new DatagramSocket();
  24. paquete = new DatagramPacket(mensaje,mensaje.length,InetAddress.getByName(IP),2001);
  25. emisionSocket.send(paquete);
  26. emisionSocket.close();
  27. }
  28. catch(SocketException e){
  29. e.getMessage();
  30. }
  31. e.getMessage();
  32. }
  33. catch(IOException e){
  34. e.getMessage();
  35. }
  36. }
  37.  
  38. }
  39.  

Código
  1. import java.net.DatagramSocket;
  2. import java.net.DatagramPacket;
  3. import java.net.SocketException;
  4. import java.io.IOException;
  5. import javax.swing.*;
  6. import javax.swing.GroupLayout.Alignment;
  7. import javax.swing.LayoutStyle.ComponentPlacement;
  8.  
  9. public class Receptor {
  10. DatagramSocket recepcionSocket;
  11. DatagramPacket paquete;
  12. int puerto = 2001;
  13. byte[] buffer = new byte[1024];
  14.  
  15. Receptor(JTextArea areaTexto)
  16. {
  17.  
  18. }
  19.  
  20. public void main() {
  21. try
  22. {
  23. recepcionSocket = new DatagramSocket(puerto);
  24. paquete = new DatagramPacket(buffer,buffer.length);
  25. recepcionSocket.receive(paquete);
  26. }
  27. catch(SocketException e)
  28. {
  29. e.getMessage();
  30. }
  31. catch(IOException e)
  32. {
  33. e.getMessage();
  34. }
  35. }
  36.  
  37. }
  38.  

de antemano gracias


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Interfaz grafica « 1 2 »
Programación C/C++
danyof 11 8,012 Último mensaje 24 Mayo 2010, 15:08 pm
por danyof
Interfaz Grafica
Programación C/C++
mapers 3 6,349 Último mensaje 8 Marzo 2011, 16:02 pm
por Oblivi0n
Interfaz Gráfica C++
Programación C/C++
Bomb-P 9 5,050 Último mensaje 20 Abril 2013, 16:06 pm
por 0xDani
Interfaz Grafica
Programación C/C++
JohnMcb 1 2,514 Último mensaje 20 Abril 2013, 02:08 am
por 85
Como controlar los eventos del tablero y actualizar interfaz
Programación General
Juanma91 0 1,646 Último mensaje 27 Mayo 2013, 19:54 pm
por Juanma91
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines