es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo crear una aplicación utilizando Swing que solo utiliza 1 JFrame?

Estoy creando una aplicación o (algo.exe). Quiero hacer una clase que servirá como mi marco principal. Esto se debe a que no quiero crear un nuevo marco para cada clase que haga. Quiero que mi clase MainMenu tenga el marco de MainFrame donde pueda poner botones, etc.

package ThinkNotOfficial;

public class Main {

public static void main(String[] args) {

    MainFrame mainFrame = new MainFrame();

}

}
package ThinkNotOfficial;

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

public class MainFrame extends JFrame{

// Variables Globales
JFrame mainFrame = new JFrame("Base Frame (global)");
ImageIcon logo = new ImageIcon("Logo.png");

MainFrame (){
    mainFrame.setSize(500, 500);
    mainFrame.setResizable(false);
    mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    mainFrame.setIconImage(logo.getImage());
    mainFrame.getContentPane().setBackground(new Color(255,255,255));
    mainFrame.setLocationRelativeTo(null);
    mainFrame.setLayout(null);

    mainFrame.setVisible(true);

    // ------------ PROGRAM FIELD -----------

}

}
package ThinkNotOfficial;

import javax.swing.*;

public class MainMenu{

// Variables Globales
JButton play = new JButton("PLAY");

MainMenu(){
    // ------------ PLAY button ------------
    play.setSize(100,50);

    // ------------ Adding parts ------------

}

}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para hacer que la clase MainMenu herede el marco de MainFrame, debes modificar el constructor de MainMenu para aceptar una instancia de MainFrame, y luego agregar los componentes GUI al marco pasado como parámetro. Aquí tienes un ejemplo:

    package ThinkNotOfficial;
    
    import javax.swing.*;
    
    public class MainMenu{
        // ------------ Variables Globales ------------
        JButton play = new JButton("JUGAR");
    
        MainMenu(MainFrame mainFrame){
            // ------------ Botón JUGAR ------------
            play.setSize(100,50);
            play.setLocation(200, 200);
    
            // ------------ Agregar partes ------------
            mainFrame.add(play);
        }
    }
    

    Ahora, cuando crees una instancia de MainMenu, debes pasar una instancia de MainFrame a su constructor:

    package ThinkNotOfficial;
    
    public class Main {
        public static void main(String[] args) {
            MainFrame mainFrame = new MainFrame();
            MainMenu mainMenu = new MainMenu(mainFrame);
        }
    }
    

    De esta manera, MainMenu tendrá acceso al marco de MainFrame, y podrás agregar componentes como el botón JUGAR a él.

Comments are closed.