RISOLTO java swing, aprire una Jframe tramite il controllor

Stato
Discussione chiusa ad ulteriori risposte.

sare1234

Utente Attivo
262
3
Buon pomeriggio ho un problema con java swing devo aprire una Jframe tramite il controllor:
Java:
public class Controller {
  
    private Login login;
    private Registrazione registrazione;
    private Password_Dimenticata password_dimenticata;

  
  
    public Controller() {
      
        login = new Login(this);
        login.setVisible(true);
        login.setLocationRelativeTo(null);
    }

  
    public void visualizzazioneRegistrazione() {
    
        registrazione = new Registrazione(this);
        registrazione.setVisible(true);
        registrazione.setLocationRelativeTo(login);
   }
      
  
    public void visualizzazionePwdDimenticata() {
        password_dimenticata = new Password_Dimenticata(this);
        password_dimenticata.setVisible(true);
        password_dimenticata.setLocationRelativeTo(login);

    }
  
     
}

Java:
package GuiFood;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JTextField;

import javax.swing.JSeparator;
import javax.swing.JPasswordField;
import javax.swing.JButton;

import Classi.Controller;


public class Login extends JFrame implements ActionListener {

    private static final long serialVersionUID = 1L;
    private JFrame frame;
    private JTextField TextFild_InserisciEmail;
    private Controller ctrl;
    private JPasswordField Password;
    protected Object frame1;


    public Login(final Controller ctrl) {
        frame = new JFrame();
        frame.getContentPane().setBackground(new Color(255, 165, 0));
        frame.setResizable(false);
        frame.setBounds(100, 100, 747, 504);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);
        this.ctrl=ctrl;

      
        JPanel panel = new JPanel();
        panel.setBounds(0, 0, 581, 482);
        frame.getContentPane().add(panel);
        panel.setLayout(null);
      
        JLabel lblNewLabel = new JLabel("");
        lblNewLabel.setIcon(new ImageIcon(Login.class.getResource("/Accesso/iconaAccesso.jpg")));
        lblNewLabel.setBounds(0, 0, 581, 482);
        panel.add(lblNewLabel);
      
        JLabel Label_Food = new JLabel("Food");
        Label_Food.setForeground(new Color(255, 255, 255));
        Label_Food.setFont(new Font("Kohinoor Devanagari", Font.BOLD, 35));
        Label_Food.setBounds(622, 65, 109, 63);
        frame.getContentPane().add(Label_Food);
      
        JLabel Label_Email = new JLabel("E-mail");
        Label_Email.setForeground(new Color(255, 255, 255));
        Label_Email.setBounds(593, 162, 61, 16);
        frame.getContentPane().add(Label_Email);

      
        JLabel Label_Password = new JLabel("Password");
        Label_Password.setForeground(new Color(255, 255, 255));
        Label_Password.setBounds(593, 220, 61, 16);
        frame.getContentPane().add(Label_Password);
      
        JSeparator separator = new JSeparator();
        separator.setForeground(new Color(0, 0, 0));
        separator.setBounds(593, 196, 138, 12);
        frame.getContentPane().add(separator);
      
        TextFild_InserisciEmail = new JTextField();
        TextFild_InserisciEmail.setVisible(false);
        TextFild_InserisciEmail.setFont(new Font("Times New Roman", Font.ITALIC, 14));
        TextFild_InserisciEmail.setDisabledTextColor(new Color(0, 0, 0));
        TextFild_InserisciEmail.setForeground(new Color(0, 0, 0));
        TextFild_InserisciEmail.setSelectionColor(new Color(192, 192, 192));
        TextFild_InserisciEmail.setText("Inserisci E-mail");
        TextFild_InserisciEmail.setBackground(new Color(255, 165, 0));
        TextFild_InserisciEmail.setBorder(null);
        TextFild_InserisciEmail.setBounds(593, 185, 148, 16);
        frame.getContentPane().add(TextFild_InserisciEmail);
        TextFild_InserisciEmail.setColumns(10);
      
        Password = new JPasswordField();
        Password.setText("123456789");
        Password.setBackground(new Color(255, 165, 0));
        Password.setBorder(null);
        Password.setBounds(593, 239, 138, 16);
        frame.getContentPane().add(Password);
      
        JSeparator separator_1 = new JSeparator();
        separator_1.setForeground(Color.BLACK);
        separator_1.setBounds(593, 254, 138, 12);
        frame.getContentPane().add(separator_1);
      
        JButton Button_Accedi = new JButton("Accedi!");
        Button_Accedi.setForeground(new  Color(255, 165, 0));
        Button_Accedi.setBounds(583, 291, 158, 29);
        frame.getContentPane().add(Button_Accedi);
        Button_Accedi.addActionListener(this);

      
        JButton Button_HaiDimenticatoLa = new JButton("Hai dimenticato la password?");
        Button_HaiDimenticatoLa.setFont(new Font("Kohinoor Gujarati", Font.PLAIN, 11));
        Button_HaiDimenticatoLa.setBorder(null);
        Button_HaiDimenticatoLa.setForeground(Color.WHITE);
        Button_HaiDimenticatoLa.setBounds(583, 313, 158, 29);
        frame.getContentPane().add(Button_HaiDimenticatoLa);
      
        JSeparator separator_1_1 = new JSeparator();
        separator_1_1.setForeground(new Color(255, 255, 255));
        separator_1_1.setBounds(583, 330, 158, 12);
        frame.getContentPane().add(separator_1_1);
      
        JButton Button_Registrazione = new JButton("Registrati!");
        Button_Registrazione.setForeground(new  Color(255, 165, 0));
        Button_Registrazione.setBounds(583, 354, 158, 29);
        frame.getContentPane().add(Button_Registrazione);
              
    }


    @Override
    public void actionPerformed(ActionEvent e) {
          
            if(e.getActionCommand().equals("Hai dimenticato la password?"))
            {
                ctrl.visualizzazionePwdDimenticata();
            }
            else if(e.getActionCommand().equals("Iscriviti!"))
            {
                ctrl.visualizzazioneRegistrazione();
            }
          
    }

  
}
Ma si apre solo una piccolissima finestra con i tre pulsanti di base perchè?
 
Ultima modifica:

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,222
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,222
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Non riesco ancora a guardare bene tutto ciò che hai scritto, ma ho visto sicuramente alcune cose non proprio corrette.
Quel "this.ctrl = ctrl" non so bene che voglia dire... alla fine stai assegnando a ctrl la stessa variabile che è nulla di default, essendo un oggetto.

In merito alla grafica, è buona cosa aggiungere gli elementi ai JPanel e combinare i vari layout in modo da disporre correttamente gli elementi. Alla fine, e solo alla fine, si aggiungono i JPanel al JFrame. Inoltre se non ricordo male - non lo uso da anni - non era una buona pratica richiamare getContentPane() e aggiungere gli elementi in quel modo.
 
  • Mi piace
Reazioni: sare1234

sare1234

Utente Attivo
262
3
Non riesco ancora a guardare bene tutto ciò che hai scritto, ma ho visto sicuramente alcune cose non proprio corrette.
Quel "this.ctrl = ctrl" non so bene che voglia dire... alla fine stai assegnando a ctrl la stessa variabile che è nulla di default, essendo un oggetto.

In merito alla grafica, è buona cosa aggiungere gli elementi ai JPanel e combinare i vari layout in modo da disporre correttamente gli elementi. Alla fine, e solo alla fine, si aggiungono i JPanel al JFrame. Inoltre se non ricordo male - non lo uso da anni - non era una buona pratica richiamare getContentPane() e aggiungere gli elementi in quel modo.
ma io utilizzo il getContentPane().....
grazie :)
Post unito automaticamente:

ma io utilizzo il getContentPane().....dici di utilizzare un panel per ogni componente?
grazie :)
this.ctrl=ctrl;
ho oltre il controller anche la classe driver che contiene il main ed:
controller ctrl= new controller;
serve per il controller
 
Ultima modifica:

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,222
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Mi era sfuggito il parametro del costruttore.

Comunque pubblica il codice intero, così che lo si possa compilare senza dover apportare modifiche.
 
Stato
Discussione chiusa ad ulteriori risposte.

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!