Mostrar Mensajes

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


Mensajes - Toshirou

Páginas: [1]
1
Hola, quisiera crear un programa que genere figuras (rectangulos, circulos, etc) de forma aleatoria, así mismo los colores y tamaño de forma aleatoria.. Todo eso usando POO (Herencia, Polimorfismo, etc). Con respecto a este tema, entiendo bien el concepto y demás.. pero no se me ocurre como hacerlo, que clases crear, etc.

¿Me podrían dar ideas y si es posible algo de código para entender por favor...? Yo he logrado hacer el programa pero de forma fea y muy básica creo.. por si acaso les dejo mi código:

Clase RandomShape

Código: [Seleccionar]
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;

public class RandomShape {

    public static Rectangle2D randomRect(){
        int x = (int) (Math.random() * 800) + 1;
        int y = (int) (Math.random() * 800) + 1;
        int width = (int) (Math.random() * 800) + 1;
        int height = (int) (Math.random() * 800) + 1;


        return new Rectangle2D.Double(x, y, width, height);

    }

    public static Ellipse2D randomEllip(){
        int x = (int) (Math.random() * 800) + 1;
        int y = (int) (Math.random() * 800) + 1;
        int width = (int) (Math.random() * 800) + 1;
        int height = (int) (Math.random() * 800) + 1;


        return new Ellipse2D.Double(x, y, width, height);
    }
   
}


Clase FrameYPanel

Código: [Seleccionar]
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
import java.util.*;
import java.util.List;

public class MyFrame extends JFrame {

    MyFrame(){
        this.setSize(800, 800);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLocationRelativeTo(null);

        this.add(new MyPanel());
    }
}


class MyPanel extends JPanel{

    private List<Rectangle2D> rect;
    private List<Ellipse2D> ellip;

    MyPanel(){
        this.setBackground(Color.GRAY);

        rect = new ArrayList<>();
        ellip = new ArrayList<>();

        for(int i=0; i<10; i++){
            rect.add(RandomShape.randomRect());
            ellip.add(RandomShape.randomEllip());
        }
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;

        for(Rectangle2D rectangles : rect){
            g2.setPaint(new Color((int) (Math.random()*255),(int) (Math.random()*255),(int) (Math.random()*255)));

            g2.fill(rectangles);
        }

        for(Ellipse2D ellipses : ellip){
            g2.setPaint(new Color((int) (Math.random()*255),(int) (Math.random()*255),(int) (Math.random()*255)));

            g2.fill(ellipses);
        }
       
    }
}


Clase Main..

Código: [Seleccionar]
package FigurasAleatorias;

public class Main {

    public static void main(String[] args) {
        new MyFrame().setVisible(true);
    }

}

Como ven yo lo hago con cierta cantidad de figuras y pues quisiera hacer algo mas automatico, que en cada ejecucion se haga cierta cantidad de figuras con distintos colores, tamaños (que no pase del tamaño de la ventana) y demás... quiero poner en práctica POO, que de verdad me falta mucho eso.

2
Estoy practicando con layouts, que es un tema que se me ha complicado un poco por el momento y bueno, he estado leyendo algo sobre el tema. Tengo entendido que algunos contenedores como el JPanel tienen el FlowLayout por defecto y que el JFrame tiene el BorderLayout. Pues bueno, probando, quise poner un JPanel en la parte NORTH del frame y otro JPanel en la parte CENTER. Dentro del NORTH, puse un boton, el cual quería posicionarlo al lado izquierdo (FlowLayout.LEFT), pero no se mueve por nada... entonces no entiendo el porqué.

Les dejo mi código, gracias.


Código: [Seleccionar]
         this.setSize(400, 400); // tamaño de la ventana
        // ####################### PANEL TOP #######################
        panelTop = new JPanel();
        panelTop.setBackground(Color.BLACK);
        //panelTop.setPreferredSize(new Dimension(400, 300));
        panelTop.add(new JButton("Left"), FlowLayout.LEFT);
       
       
        // ####################### PANEL CENTER #######################
        panelCenter = new JPanel();
        panelCenter.setBackground(Color.DARK_GRAY);
       
       
        this.add(panelTop, BorderLayout.NORTH);
        this.add(panelCenter, BorderLayout.CENTER);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

También probé estableciendo explicitamente FlowLayout al panel que está en NORTH y nada

3
Buenas, qué tal? Aquí les dejo la resolución del ejercicio propuesto (CU00688B) del tutorial pdf de programación Java de aprenderaprogramar.

Se me complicó un poco el colocar un título a cada producto que se imprime (producto fresco, congelado, etc). Se me ocurren varias formas, pero creo que existe un método más rápido que quizás no se me ocurre en este momento y espero puedan decirme la forma.

O sea, yo quería que al imprimir, hiciera esto:

Citar
####### Productos Frescos #######
todos los productos frescos...

y así con los demás.

En fin, aquí les dejo la resolución del ejercicio, gracias.

Clase Producto
Código: [Seleccionar]
public class Producto {

private String fecha_envasado;
private String fecha_caducidad;
private String pais;
private int num_lote;

Producto(String envasado, String caducidad, String pais, int num_lote){
this.fecha_envasado = envasado;
this.fecha_caducidad = caducidad;
this.pais = pais;
this.num_lote = num_lote;
}

public String getEnvasado() { return fecha_envasado; }
public void setEnvasado(String envasado) { this.fecha_envasado = envasado; }

public String getCaducidad() { return fecha_caducidad; }
public void setCaducidad(String caducidad) { this.fecha_caducidad = caducidad; }

public String getPais() { return pais; }
public void setPais(String pais) { this.pais = pais; }

public int getNum_lote() { return num_lote; }
public void setNum_lote(int num_lote) { this.num_lote = num_lote; }

public void mostrarInformacion() {
System.out.println("Fecha de envasado: " + this.getEnvasado() + "; Fecha de caducidad: " + this.getCaducidad());
System.out.println("Pais de origen: " + this.getPais() + "; Nro. Lote: " + this.getNum_lote());
}
}

Clase ProductosFrescos
Código: [Seleccionar]
public class ProductosFrescos extends Producto {

ProductosFrescos(String envasado, String caducidad, String pais,  int num_lote){
super(envasado, caducidad, pais, num_lote);
}

public void mostrarInformacion() {
super.mostrarInformacion();
}
}

Clase ProductosRefrigYCongel (abstracción)
Código: [Seleccionar]
public class ProductosRefriYCongel extends Producto{

private double tempRecomend;

public ProductosRefriYCongel(String envasado, String caducidad, String pais, int num_lote, double tempRecomend) {
super(envasado, caducidad, pais, num_lote);
this.tempRecomend = tempRecomend;
}

public double getTempRecomend() { return tempRecomend; }
public void setTempRecomend(double tempRecomend) { this.tempRecomend = tempRecomend; }

public void mostrarInformacion() {
super.mostrarInformacion();
System.out.println("Temperatura recomendada: " + this.getTempRecomend() + "%");
}
}

Clase ProductosRefrigerados
Código: [Seleccionar]
public class ProductosRefrigerados extends ProductosRefriYCongel {

private String codigo_organismo;

public ProductosRefrigerados(String envasado, String caducidad, String pais, int num_lote, double tempRecomend, String codigoOrganis) {
super(envasado, caducidad, pais, num_lote, tempRecomend);
this.codigo_organismo = codigoOrganis;
}

public String getCodigo_organismo() { return codigo_organismo; }
public void setCodigo_organismo(String codigo_organismo) { this.codigo_organismo = codigo_organismo; }

public void mostrarInformacion() {
super.mostrarInformacion();
System.out.println("Código de organismo: " + this.getCodigo_organismo());
}
}

Clase ProductosCongelados
Código: [Seleccionar]
public class ProductosCongelados extends ProductosRefriYCongel {

public ProductosCongelados(String envasado, String caducidad, String pais, int num_lote, double tempRecomend) {
super(envasado, caducidad, pais, num_lote, tempRecomend);
}

public void mostrarInformacion() {
super.mostrarInformacion();
}
}

Clase CongeladoPorAgua
Código: [Seleccionar]
public class PorAgua extends ProductosCongelados {

private double salinidadAgua;

public PorAgua(String envasado, String caducidad, String pais, int num_lote, double tempRecomend, double salinidad) {
super(envasado, caducidad, pais, num_lote, tempRecomend);
this.salinidadAgua = salinidad;
}

public double getSalinidadAgua() { return salinidadAgua; }
public void setSalinidadAgua(double salinidadAgua) { this.salinidadAgua = salinidadAgua; }

public void mostrarInformacion() {
super.mostrarInformacion();
System.out.println("Salinidad de agua: " + this.getSalinidadAgua());
}
}

Clase CongeladoPorAire
Código: [Seleccionar]
public class PorAire extends ProductosCongelados{

private double nitrogeno;
private double oxigeno;
private double dioxCarb;
private double vaporAgua;

public PorAire(String envas, String caduc, String pais, int numLot, double tempRecomend, double nitrog,
double oxig, double dioxCarb, double vaporAgua) {
super(envas, caduc, pais, numLot, tempRecomend);
this.nitrogeno = nitrog;
this.oxigeno = oxig;
this.dioxCarb = dioxCarb;
this.vaporAgua = vaporAgua;
}

public double getNitrogeno() { return nitrogeno; }
public void setNitrogeno(double nitrogeno) { this.nitrogeno = nitrogeno; }

public double getOxigeno() { return oxigeno; }
public void setOxigeno(double oxigeno) { this.oxigeno = oxigeno; }

public double getDioxCarb() { return dioxCarb; }
public void setDioxCarb(double dioxCarb) { this.dioxCarb = dioxCarb; }

public double getVaporAgua() { return vaporAgua; }
public void setVaporAgua(double vaporAgua) { this.vaporAgua = vaporAgua; }

public void mostrarInformacion() {
super.mostrarInformacion();
System.out.println("Nitrogeno: " + this.getNitrogeno() + "%; Oxigeno: " + this.getOxigeno() + "%");
System.out.println("Dioxido de carbono: " + this.getDioxCarb() + "%; Vapor de agua: " + this.getVaporAgua() + "%");
}
}

Clase CongeladoPorNitrogeno
Código: [Seleccionar]
public class PorNitrogeno extends ProductosCongelados {

private String metodCongelacion;
private int tiempExposicNitrogeno;

public PorNitrogeno(String envas, String caduc, String pais, int numLot, double tempRecomend,
String metodCongelac, int tiempExposicNitrogeno) {
super(envas, caduc, pais, numLot, tempRecomend);
this.metodCongelacion = metodCongelac;
this.tiempExposicNitrogeno = tiempExposicNitrogeno;
}

public String getMetodCongelacion() { return metodCongelacion; }
public void setMetodCongelacion(String metodCongelacion) { this.metodCongelacion = metodCongelacion; }

public int getTiempExposicNitrogeno() { return tiempExposicNitrogeno; }
public void setTiempExposicNitrogeno(int tiempExposicNitrogeno) { this.tiempExposicNitrogeno = tiempExposicNitrogeno; }

public void mostrarInformacion() {
super.mostrarInformacion();
System.out.println("Metodo de congelación: " + this.getMetodCongelacion() + "\nTiempo de exposición por Nitrogeno: "
+ this.getTiempExposicNitrogeno());
}
}

Clase EnvioDeProductos
Código: [Seleccionar]
public class EnvioDeProductos {

private ArrayList<Producto> productos;

public EnvioDeProductos() {
this.productos = new ArrayList<>();
}

public ArrayList<Producto> getProductos() { return productos; }
public void setProductos(ArrayList<Producto> productos) { this.productos = productos; }

public void agregarProducto(Producto producto) {
this.productos.add(producto);
}

public void mostrarProductos() {
Iterator<Producto> it = this.productos.iterator();
int contador = 0;
while( it.hasNext() ) {
it.next().mostrarInformacion();
contador++;
}

System.out.println("Total de productos enviados: " + contador);
}
}

Método main
Código: [Seleccionar]
public static void main(String[] args) {
EnvioDeProductos envio = new EnvioDeProductos();

envio.agregarProducto(new ProductosFrescos("12-04-18", "12-05-19", "Perú", 2422333));
envio.agregarProducto(new ProductosFrescos("12-04-18", "12-05-19", "España", 1293291));

envio.agregarProducto(new ProductosRefrigerados("12-03-17", "12-04-18", "Suecia", 23210, 5.0, "XZEP211"));
envio.agregarProducto(new ProductosRefrigerados("12-03-17", "12-04-18", "Bélgica", 19302, 7.0, "PDMS231"));
envio.agregarProducto(new ProductosRefrigerados("12-03-17", "12-04-18", "Australia", 98421, 4.0, "EWK21ME"));

envio.agregarProducto(new PorAgua("12-03-14", "12-04-15", "Perú", 32423, -5.2, 24.5));
envio.agregarProducto(new PorAgua("23-04-13", "23-03-14", "Siria", 45122, -2.0, 24.5));

envio.agregarProducto(new PorAire("12-03-14", "12-04-15", "Bélgica", 14342, -7.2, 12.0, 10.4, 5.3, 10.0));
envio.agregarProducto(new PorAire("23-04-11", "14-02-13", "España", 14342, -2.3, 12.0, 10.4, 5.3, 10.0));

envio.agregarProducto(new PorNitrogeno("13-02-15", "25-02-18", "México", 23211, -10.2, "Criogénico", 23223));

envio.mostrarProductos();
}

Gracias y si me tienen que corregir, háganlo por favor, es la única forma de aprender. Ah, y por favor, revisen mi otra publicación  :P

4
Buenas, qué tal? Soy nuevo en la página y creo toca la debida presentación ;D
Me llamo Luciano y soy de Perú-Lima. Actualmente estudio Ingeniería de Software pero soy un autodidacta nato se podría decir jaja, me gusta aprender por mi cuenta, es más, todo lo que sé de Java, Python y otros lenguajes lo aprendí por cuenta propia, investigando en internet, en fin.

Espero poder aportar en el foro, y desde ya muchas gracias por tener tan excelente página que entregue tan valiosa información para personas como yo que quieren aprender algo nuevo.

Saludos.

5
Buenas noches, es primera vez que publico una solución a los ejercicios propuestos en el curso de Java de aprenderaprogramar. En este caso es el ejercicio CU00666B del tutorial. Espero puedan corregir mi problema si es necesario o dar ciertas recomendaciones. Muchas gracias.

Clase ListaCantantesFamosos

Código: [Seleccionar]
import java.util.ArrayList; //Añadido

class ListaCantantesFamosos{

    private ArrayList<String> cantantesFamosos;

    ListaCantantesFamosos(){
        this.cantantesFamosos = new ArrayList<>();
        this.cantantesFamosos.add("Gianmarco");
        this.cantantesFamosos.add("Pedro Suarez");
        this.cantantesFamosos.add("Ed Sheeran");
    }

    public void añadirCantante(String nombre){
        this.cantantesFamosos.add(nombre);
    }

    public ArrayList<String> getCantantesFamosos(){
        return cantantesFamosos;
    }

    public void listarCantantesFamosos(){
        int i=1;
        System.out.println("Lista de cantantes famosos: ");
        for(String e : this.getCantantesFamosos()){
            System.out.println("Cantante " + i + ": " + e);
            i++;
        }
    }
}

Aquí el main

Código: [Seleccionar]
import java.util.Scanner; //Añadido

public class Test{
    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        var cantantes = new ListaCantantesFamosos();

        cantantes.listarCantantesFamosos();

        String usuario="s";
        while(usuario.equalsIgnoreCase("s")){
            System.out.print("Introduce un cantante famoso: ");
            cantantes.añadirCantante(in.nextLine());

            cantantes.listarCantantesFamosos();

            System.out.print("Desea seguir agregando cantantes? (s/n): ");
            usuario = in.nextLine();
        }
    }
}


Saludos desde Perú. Muchas gracias de antemano. :)

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".