Foros del Web » Programación para mayores de 30 ;) » Java »

Duda sobre "laminas".

Estas en el tema de Duda sobre "laminas". en el foro de Java en Foros del Web. Hola gente, espero esten bien. Veran, he retomado un curso de java que tenia pendiente, y estoy en la parte de eventos. El problema con ...
  #1 (permalink)  
Antiguo 11/06/2018, 01:05
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 424
Antigüedad: 8 años, 8 meses
Puntos: 12
Duda sobre "laminas".

Hola gente, espero esten bien.

Veran, he retomado un curso de java que tenia pendiente, y estoy en la parte de eventos.

El problema con esto es lo siguiente.

Yo tengo estas clases.

Clase Main:
Código Java:
Ver original
  1. package OOP;
  2. import java.awt.*;
  3. import javax.swing.JFrame;
  4. public class Main{
  5.     public static void main(String[] args){
  6.        
  7.         // Frame Position and Icon //
  8.         int w = 600;
  9.         int h = 350;
  10.         int x = (Toolkit.getDefaultToolkit().getScreenSize().width/2)-(w/2);
  11.         int y = (Toolkit.getDefaultToolkit().getScreenSize().height/2)-(h/2);
  12.         Image icon = Toolkit.getDefaultToolkit().getImage("src/favicon.png");
  13.         // Init our Frame //
  14.         Frame MyFrame = new Frame(x, y, w, h, "My First Java Windows", icon, JFrame.EXIT_ON_CLOSE);
  15.         // Extra Opts //
  16.         MyFrame.setResizable(false);
  17.         // Add new Prints //
  18.         Prints FirstPrint = new Prints();
  19.         MyFrame.add(FirstPrint);
  20.         // Show Frame //
  21.         MyFrame.setVisible(true);
  22.        
  23.     }
  24. }

Clase para crear el frame:
Código Java:
Ver original
  1. package OOP;
  2. import java.awt.*;
  3. import javax.swing.*;
  4. public class Frame extends JFrame{
  5.    
  6.     private int x;
  7.     private int y;
  8.     private int width;
  9.     private int height;
  10.    
  11.     public Frame(int x, int y, int w, int h, String title, Image icon, int o){
  12.         this.x = x;
  13.         this.y = y;
  14.         this.width = w;
  15.         this.height = h;
  16.         this.setTitle(title);
  17.         this.setIconImage(icon);
  18.         this.setBounds(this.x, this.y, this.width, this.height);
  19.         this.setDefaultCloseOperation(o);
  20.     }
  21.    
  22. }

Clase para crear laminas:
Código Java:
Ver original
  1. package OOP;
  2. import java.awt.*;
  3. import java.io.File;
  4. import java.io.IOException;
  5. import javax.imageio.ImageIO;
  6. import javax.swing.*;
  7.  
  8. public class Prints extends JPanel{
  9.    
  10.     private Graphics G;
  11.    
  12.     public void paintComponent(Graphics G){
  13.         super.paintComponent(G);
  14.         Graphics2D G2 = (Graphics2D) G;
  15.         Image BG = null;
  16.         try {
  17.             BG = ImageIO.read(new File("src/bg.png"));
  18.             G2.drawImage(BG, 0, 0, null);
  19.         } catch (IOException e) {
  20.             System.out.println("No se pudo mostrar la imagen bg.png");
  21.         }
  22.         Font Title = new Font("Arial", Font.BOLD, 20);
  23.         G2.setColor(new Color(255, 255, 255));
  24.         G2.setFont(Title);
  25.         G2.drawString("New Title", 80, 45);
  26.         G2.drawImage(Toolkit.getDefaultToolkit().getImage("src/favicon.png"), 20, 15, null);
  27.         G2.setColor(new Color(180, 180, 180));
  28.         G2.drawLine(565, 80, 20, 80);
  29.     }
  30.    
  31. }

Bien, se supone que la "Lamina" sera donde uno añadira los componentes y tal como se ve en la clase Main luego se añade con el metodo add

Y el problema viene aqui, cuando me doy cuenta de que para crear una lamina me veo obligado a crear una clase aparte... porque si creo un nuevo objeto de tipo Prints se me crea todo lo que esta dentro del metodo paintComponent

entonces la pregunta es: ¿como puedo usar una clase para crear laminas vacias?
para que vean lo que mas o menos buscaria:
Código Java:
Ver original
  1. Prints FirstPrint = new Prints();
  2. FirstPrint.drawString("Primer lamina", 20, 20);
  3. Prints SecondPrint = new Prints();
  4. SecondPrint.drawString("Segunda lamina", 20, 40);
  5. MyFrame.add(FirstPrint);
  6. MyFrame.add(SecondPrint);

De esa manera yo no me veo forzado a crear una clase para añadir toda una parte de textos y demas y luego otra clase para añadir toda otra parte de botones

Espero que puedan ayudarme, porque no veo el sentido de andar creando clases por cada lamina que necesite.

saludos!
  #2 (permalink)  
Antiguo 13/06/2018, 02:29
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Duda sobre "laminas".

Crea un parámetro boolean que controle si debe crearse o no lo que esté dentro del paint component y un constructor con ese boolean.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:22.