Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - -Localhost-

#1

Jeje, muchas gracias por el código y la explicación, sólo me quedaron 2 dudas:

La primera es que no entiendo lo que dijo LEYER
Cita de: LEYER en 31 Julio 2010, 08:12 AM
Cuando hace esto super(new Frame());, no estas cuidando la memoria

¿Puedes decirme por qué sucede eso que dices? ^^U no sé a que te estás refiriendo con lo de que no cuido la memoria jeje...

Y la segunda duda que me vino es si esto se ejecuta en un applet.

Un saludo y gracias por contestar.
#2
Hola a todos,

Estoy intentando hacer un programa que se ejecute en Full Screen o que ocupe todo el tamaño de la pantalla (incluyendo la barra de inicio).

Uso este código:
Código (java) [Seleccionar]
import java.awt.*;

public class ventana extends Window {

GraphicsDevice myDevice;

public ventana (){

super(new Frame());
try{myDevice.setFullScreenWindow(this);}catch(Exception e){System.out.println(e);}
setVisible(true);
}

public static void main(String args[]){

new ventana();
}
}

Y me da este error:
Código (java) [Seleccionar]
java.lang.NullPointerException

Alguien sabría decirme ¿por qué?

Muchas gracias de antemano.
#3
Lo intenté pero lo que coloqué en "South" (es decir el PNsur) se queda el mismo lugar en el que se encontraba antes de redimensionar el Frame, es decir lo único que hace colocar primero el pack(); y luego el setSize, es crecer la ventana, pero no separar los componentes y hacer espacio en el centro.

Y setPreferredSize(Dimension d) sólo sirve en los JFrame y tengo que hacerlo con Frame.
________________________EDITO_____________________________________

Lo solucioné poniendo el setSize() antes de definir el layout el setVisible() y cualquier cosa (de hecho lo puse inmediatamente después de super(""); xD) es decir:
Código (java) [Seleccionar]

public mueveCosasDibujables() {

super("Dibujador de cosas");
setSize(400,400);
setLayout(new BorderLayout());


No pongo el code completo porque ahora mismo es un poco más largo que antes, y pa no liar jeje. (y da errores por todos lados el muy desgraciado... xD).

Muchas gracias LEYER por tus respuestas =D. Dejé un comentario esta mañana en un post de tu blog, me da errores al compilar el código que subiste como reto para que la gente crackease en java, no sé si está revisado ese código (? xD no sé :S).

Un saludo.
#4
Hola, gracias por responder,

sColor no produce ninguna excepción, su código es éste:
Código (java) [Seleccionar]
package eje01;

import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class sColor extends Choice {

Vector listaColores= new Vector();

public sColor(String primerItem, String[] colores){

if(!primerItem.equals("") && !primerItem.equals(null)){

this.addItem(primerItem);
} else {
this.addItem("Selecciona un color");
}

for(int n=0;n<colores.length;n++){

Color color= leerColor(colores[n]);

if(color!=null && noRepetido(colores[n])){

this.addItem(colores[n].toString());
listaColores.add(colores[n].toString());
}
}
}

public boolean noRepetido(String color){

for (int n=0;n<listaColores.size();n++){

if(listaColores.get(n).toString().equalsIgnoreCase(color)){

return false;
}
}

return true;
}

public static Color leerColor(String color){

Color colorResultado=null;
String colores[] = {"negro","azul","cyan","gris oscuro","gris","verde","gris claro","magenta","naranja","rosa","rojo","blanco","amarillo"};
int identificadorColor=colores.length;

for (int n=0;n<colores.length;n++){

if(color.toLowerCase().equals(colores[n])){

identificadorColor=n;
n=colores.length;}
}

switch(identificadorColor){

case 0: colorResultado = Color.black;
break;
case 1: colorResultado = Color.blue;
break;
case 2: colorResultado = Color.cyan;
break;
case 3: colorResultado = Color.darkGray;
break;
case 4: colorResultado = Color.gray;
break;
case 5: colorResultado = Color.green;
break;
case 6: colorResultado = Color.lightGray;
break;
case 7: colorResultado = Color.magenta;
break;
case 8: colorResultado = Color.orange;
break;
case 9: colorResultado = Color.pink;
break;
case 10: colorResultado = Color.red;
break;
case 11: colorResultado = Color.white;
break;
case 12: colorResultado = Color.yellow;

}

return colorResultado;
}
}


Es algo que tiene que ver con lo segundo porque modifiqué eso y se vio la parte de arriba únicamente, luego le agregué un "pack();" y ahora se ven todos los componentes correctamente, pero "center" quiero que ocupe más espacio, apenas ocupa un par de píxeles, sabes como podría hacerlo más grande? probé con introducirle un panel y ponerle setSize(360,360); pero ni aún así.  No sé si habrá una manera mejor que pack, yo lo preferiría porque pack() no me deja modificar el tamaño inicial del Frame. Adjunto el código modificado:

Código (java) [Seleccionar]
import java.awt.*;
import eje01.*;

public class mueveCosasDibujables extends Frame {



private String colores[] =  {"negro","azul","cyan","gris oscuro","gris","verde","gris claro","magenta","naranja","rosa","rojo","blanco","amarillo"};
private String[] coloresFondo= colores,coloresTexto = colores;


private Button BTarriba= new Button("arriba"),
      BTabajo= new Button("abajo"),
      BTizquierda= new Button("izquierda"),
      BTderecha= new Button ("derecha"),
      BTaumentar= new Button("aumentar"),
      BTdisminuir= new Button("disminuir");

private Choice CHfiguras = new Choice();
private sColor sColoresFondo= new sColor("Color de fondo",coloresFondo),sColoresTexto = new sColor("Color del texto",coloresTexto);

private GridLayout GLnorte = new GridLayout(1,3), GLsur = new GridLayout(1,6);
private Panel PNnorte = new Panel(), PNsur = new Panel(),PNcentro= new Panel();

public mueveCosasDibujables() {

setLayout(new BorderLayout());

CHfiguras.addItem("Selecciona figura");
CHfiguras.addItem("Cuadrado");
CHfiguras.addItem("Círculo");
CHfiguras.addItem("Rectángulo");
CHfiguras.addItem("Triángulo");

PNnorte.setLayout(GLnorte);
PNnorte.add(CHfiguras);
PNnorte.add(sColoresFondo);
PNnorte.add(sColoresTexto);

PNsur.setLayout(GLsur);
PNsur.add(BTarriba);
PNsur.add(BTabajo);
PNsur.add(BTizquierda);
PNsur.add(BTderecha);
PNsur.add(BTaumentar);
PNsur.add(BTdisminuir);

add("North",PNnorte);
add("South",PNsur);
add("Center",PNcentro);

setVisible(true);
setLocation(500,200);
setSize(400,400);
pack();


}

public static void main (String args[]){

new mueveCosasDibujables();
}


}


Un saludo y gracias de antemano.
#5
Hola a todos,

Bueno estaba haciendo un ejercicio que me mandaron que consiste en poner unos componentes gráficos en un frame (para más adelane hacer que cumplan la función que deberían). El código es el siguiente:

Código (java) [Seleccionar]
import java.awt.*;
import eje01.sColor;

public class mueveCosasDibujables extends Frame {



private String colores[] =  {"negro","azul","cyan","gris oscuro","gris","verde","gris claro","magenta","naranja","rosa","rojo","blanco","amarillo"};
private String[] coloresFondo= colores,coloresTexto = colores;


private Button BTarriba= new Button("arriba"),
      BTabajo= new Button("abajo"),
      BTizquierda= new Button("izquierda"),
      BTderecha= new Button ("derecha"),
      BTaumentar= new Button("aumentar"),
      BTdisminuir= new Button("disminuir");

private Choice CHfiguras = new Choice();
private sColor sColoresFondo= new sColor("Color de fondo",coloresFondo),sColoresTexto = new sColor("Color del texto",coloresTexto);

private GridLayout GLnorte = new GridLayout(3,1), GLsur = new GridLayout(6,1);
private Panel PNnorte = new Panel(), PNsur = new Panel();

public mueveCosasDibujables() {

setVisible(true);
setSize(400,400);
setLocation(500,200);
setLayout(new BorderLayout());

CHfiguras.addItem("Selecciona figura");
CHfiguras.addItem("Cuadrado");
CHfiguras.addItem("Círculo");
CHfiguras.addItem("Rectángulo");
CHfiguras.addItem("Triángulo");

PNnorte.add(CHfiguras);
PNnorte.add(sColoresFondo);
PNnorte.add(sColoresTexto);

PNsur.add(BTarriba);
PNsur.add(BTabajo);
PNsur.add(BTizquierda);
PNsur.add(BTderecha);
PNsur.add(BTaumentar);
PNsur.add(BTdisminuir);

add("North",PNnorte);
add("South",PNsur);
}

public static void main (String args[]){

new mueveCosasDibujables();
}


}


eje01 es el package que incluye los ejercicios de la primera unidad y sColor es una extensión de la clase Choice que lo que hace es añadir el título del choice (que lo recibe en el primer parametro) y los componentes que sean colores en el Choice (que lo recibe en el segundo parametro al construirlo) y devolver los colores como objetos Color cuando los seleccionas.

El problema es que los componentes gráficos únicamente se dibujan por pantalla cuando intento modificar el tamaño del frame (hago click en los laterales o la barra de título), o cuando lo modifico (con el cursor, no desde código).

Gracias de antemano,

Un saludo.
#6
Ok muchas gracias Debci, concuerdo con D4N93R completamente;  tus resuestas son excelentes.

Ya modifiqué el título para que se pueda ver que está solucionado.

Un saludo.
#7
Ok, muchas gracias, supuse que lo del mapeo se haría desde el router, pero mi duda era si no había una manera de hacerlo desde código.

Ahora me surje otra duda, para que funsionase tube que "abrir" o "mapear" el puerto. Bien, entonces soy vulnerable a ataques por ese puerto? me convendría "desmapearlo" cuando no lo esté usando? qué más debería saber al respecto en cuanto a la seguridad de mi red?

Muchas gracias de antemano.

PD: El chat ya funciona así que si quieres puedes cerrar el tema respondiendo aclarándome esta última duda ^^.
#8
Ok, muchas gracias por sus respuestas.

¿Me podrían decir como mapeo los puertos que usa el server?

Muchas gracias, y muy bueno el foro jeje.
#9
Hola,

Programé un chat en java y al probarlo conectando desde un ordeador remoto me dio error: java.net.ConnectException: Connection timed out: connect. Aunque lo había probado ya en la LAN y funciona al 100%.

Sé que es posible que sea por el firewall pero creo que es más seguro que sea un problema de programación, he leido información y al parecer los protocolos de conexiones en LANs son diferentes a los protocolos de conexiones Remotas y no te estoy seguro de ese dato, ¿alguien podría confirmármelo? También se me ocurrió crearme un dominio en www.no-ip.com y hacer que el chat use esa dirección ip para conectar al servidor y no la misma dirección IP pública.

Añado también que para conectar al chat el único parámetro relevante que uso es mi IP pública.


Códigos : aquí.