Creacion de metodos

gamodi_aviacion
29 de Diciembre del 2005
Soy nuevo en esto, estoy aprendiendo con JCreator me estoy auxiliando con la ayuda de un libro, pero necesito resolver un problema de la escuela.
Me piden que escriba un metodo llamado "cuadradoDeAsteriscos" que muestre un cuadrado relleno(el mismo numero de filas y columnas) de asteriscos cuyo lado se especificado en el parametro entero "lado". Tengo que incorporar este metodo en un applet que reciba como entrada por parte del usuario un valor entero para "lado", y que realice el dibujo con el metodo"cuadradoDeAsteriscos". Este metodo debo llamarlo desde el metodo paint del applet y que debe recibir el objeto Graphics de paint.
Alguien me pudiera ayudar para saber como le hago.
Gracias

harpo
29 de Diciembre del 2005
Hola gamodi, yo tengo un poloblema similar al, por no decir prácticamente igual. Soy principiante en esto de Java, como tu, yo he enviado el objeto Graphics al método cuadradoDeCaracter ( que para el caso es el mismo que cuadradoDeAsteriscos), pero si hago la llamada g.DrawString, dentro del foor interno, me pinta solo la última línea, encambio si llamo a g.DrawString fuera de las dos instrucciones for , solo dibuja la primera línea, te mando el código. Espero que entre los dos demos con la solución , o que alguna alma caritativa con más conocimientos nos ayude, un saludo.
import java.awt.*;
import javax.swing.*;

public class cuadrados extends JApplet {

int lado; // variable para introducir el valor del lado
String caracter; // variable para introducir el caracter


// iniciar el applet obteniendo los datos del usuario
public void init()
{
// pedir al usuario el valor del lado
String ladoCadena = JOptionPane.showInputDialog( "Introduzca el valor del lado");
// convertir la cadena ladoCadena en un entero
lado = Integer.parseInt( ladoCadena );

// pedir al usuario el caracter a introducir
caracter = JOptionPane.showInputDialog("Introduzca un carácter");

} // fin del método init


// dibujar el cuadrado en el fondo del applet
public void paint( Graphics g )
{
super.paint( g ); // llamar al método heredado de JApplet

// dibujar el cuadrado en el applet
cuadradoDeCaracter( lado, caracter, g );

} // fin del método paint

public void cuadradoDeCaracter( int l, String c , Graphics g)
{
String cuadrado = "";
for( int filas = l; filas <= l; filas++){ // contar l filas
for( int columnas = 1; columnas <= l; columnas++){ // contar l columnas
cuadrado += c;
} // fin de la instrucción for interna
cuadrado += "n";
} // fin de la instrucción for externa
g.drawString( cuadrado, 25, 25 );

} // fin del método cuadradoDeCaracter

} //

gamodi_aviacion
29 de Diciembre del 2005
Que tal harpo, gracias por tu codigo, me fue de gran ayuda.
Yo he probado meter el retorno de carro ("/n") en paint, pero no me lo respeta.
Parece que por eso no te funciona tu codigo, aunque logicamente esta bien escrito.

Te mando el codigo que yo hice con la ayuda del tuyo, es exactamente igual nada mas cambia la ultima parte. Espero que te ayude.
Saludos.


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

public class Ejer_6_18 extends JApplet {

int num;
String caracter;

public void init() {
String ladoCadena = JOptionPane.showInputDialog("Escriba el numero de fila y columnas");
num = Integer.parseInt(ladoCadena);

caracter = JOptionPane.showInputDialog("Escriba el caracter");
}
public void paint(Graphics g) {
super.paint(g);
cuadradoDeAsteriscos(num, caracter, g);
}



public void cuadradoDeAsteriscos(int y, String c, Graphics g)
{

for (int fila = 1; fila <= y; fila++)
for (int col = 1; col <= y; col++)
g.drawString(c, fila * 10, col * 10);
}

}



harpo
29 de Diciembre del 2005
Que tal gamodi, gracias por contestarme, he realizado el método como tú lo expones, pero solo me dibuja la última columna, ¿A ti te dibuja el cuadrado?, porque yo he tenido que rescribir el método de la siguiente forma para que dibuje el cuadrado completo:
public void cuadradoDeCaracter( int l, String c , Graphics g)
{
String filaC = "";
for( int filas = l; filas <= l; filas++){ // contar l filas
for( int columnas = 1; columnas <= l; columnas++){ // contar l columnas
for( int colm = 1; colm <= l; colm++){
filaC += c;
} // fin de la instrucción interna
g.drawString( filaC, filas , columnas * 10 );
filaC = "";
} // fin de la instrucción for interna

}// fin de la instrucción for externa
No consigo realizar el cuadrado de ninguna otro forma, no me hace gracia tener que utilizar tres instrucciones for anidadas, pero es lo que hay, si te enteras de alguna forma más simple te agradecería que me lo comunicaras. Un saludo y gracias por la ayuda.

harpo
29 de Diciembre del 2005
Nadie sabe como solucionar esto, por favor, por más que me caliento la cabeza no doy con la solución. Una ayudita.