Como fazer uma tela mudar para tela de splash screen ao clicar em um botão play?

Boa Tarde a todos,bom tenho este botão na minha classe main.java:
JButton btnPlay = new JButton(" PLAY");
btnPlay.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {

e quero um comando que ao aperta o botão play mude a tela para a outra tela splash screen,nome desta classe sendo login.java:
package view;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import javax.swing.JProgressBar;
import java.awt.Color;
public class login extends JPanel {
/**

  • Create the panel.
    */
    public login() {
    setLayout(null);
    JProgressBar progressBar = new JProgressBar();
    progressBar.setIndeterminate(true);
    progressBar.setStringPainted(true);
    progressBar.setForeground(Color.GREEN);
    progressBar.setBackground(Color.WHITE);
    progressBar.setBounds(0, 392, 248, 24);
    add(progressBar);
    JLabel label = new JLabel("");
    label.setIcon(new
    ImageIcon(login.class.getResource("/view/Linda.png")));
    label.setBounds(0, 0, 340, 427);
    add(label);
    }
    }
    e muito difícil o que fazer pessoal?

vc só quer chamar outra tela?

cria dois forms, um como vc citou “Login” e o outro “QualquerCoisa”

Aí vc coloca o botão no seu form, e depois clica duas vezes no botão, ou, botão direito, action, action performed.

vai abrir a página de código fonte, aí vc coloca de acordo com o nome que vc colocou lá, eu usei “QualquerCoisa”:

QualquerCoisa qualquer = new QualquerCoisa(); // Aqui vc instancia o form, chama ele e "renomeia"
qualquer.setVisible(true); //aqui vc mostra ele na tela
dispose(); // e aqui vc fecha o form de "Login"

vou fazer isso isso cara,eu adoro programação qualquer coisa eu retorno obrigado.

1 curtida

cara ele aceitou numa boa só estou com dúvidas nesse form o que significa,por favor tem como colocar corretamente pra mim essa classe qualquer coisa si chama main.java:

JButton btnPlay = new JButton(" PLAY");
btnPlay.addActionListener(new ActionListener() {
private main main;

public void actionPerformed(ActionEvent arg0) {
	main = new main(); // Aqui vc instancia o form, chama ele e "renomeia"
	main.setVisible(true); //aqui vc mostra ele na tela
	dispose(); // e aqui vc fecha o form de "Login"
	
	
}

Bom dia, cara “Form” em português, significa formulário. É nele que você vai ter sua interface.
Mas no caso, esse é o Form JFrame.

Eu uso o Netbeans, então pra adicionar um novo Form JFrame, vc vai em um pacote seu, clica com o botão direito, vai em novo, e depois em Form JFrame.

vou deixar aqui minhas duas jframes a primeira e da classe main.java:
package view;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import java.awt.Color;
import java.awt.Font;
import com.jgoodies.forms.factories.DefaultComponentFactory;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class main extends JFrame {
/**
*
/
private static final long serialVersionUID = 1L;
private JPanel contentPane;
/
*

  • Launch the application.
    /
    public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
    public void run() {
    try {
    main frame = new main();
    frame.setVisible(true);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    });
    }
    /
    *
  • Create the frame.
    */
    public main() {
    setAutoRequestFocus(false);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 402, 473);
    contentPane = new JPanel();

contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

setContentPane(contentPane);
contentPane.setLayout(null);

JLabel label = new JLabel("");
label.setIcon(new
ImageIcon(main.class.getResource("/view/cora\u00E7\u00E3o.gif")));
label.setBounds(275, 299, 101, 107);
contentPane.add(label);

JLabel lblGostosasPlay =
DefaultComponentFactory.getInstance().createTitle(“GOSTOSAS PLAY”);
lblGostosasPlay.setForeground(new Color(255, 0, 255));
lblGostosasPlay.setFont(new Font(“Arial Black”, Font.BOLD, 33));
lblGostosasPlay.setBounds(26, 11, 338, 37);
contentPane.add(lblGostosasPlay);

JButton btnMenu = new JButton(" MENU");
btnMenu.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {

}

});
btnMenu.setBackground(new Color(224, 255, 255));
btnMenu.setFont(new Font(“Tahoma”, Font.PLAIN, 14));
btnMenu.setForeground(Color.MAGENTA);
btnMenu.setBounds(275, 201, 89, 23);
contentPane.add(btnMenu);

JButton btnOpes = new JButton(“OP\u00C7\u00D5ES”);
btnOpes.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {

}

});
btnOpes.setBackground(new Color(224, 255, 255));
btnOpes.setFont(new Font(“Tahoma”, Font.PLAIN, 14));
btnOpes.setForeground(Color.MAGENTA);
btnOpes.setBounds(275, 258, 89, 23);
contentPane.add(btnOpes);

JButton btnPlay = new JButton(" PLAY");
btnPlay.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {

}

});
btnPlay.setBackground(new Color(224, 255, 255));
btnPlay.setFont(new Font(“Tahoma”, Font.PLAIN, 14));
btnPlay.setForeground(Color.MAGENTA);
btnPlay.setBounds(275, 147, 89, 23);
contentPane.add(btnPlay);

JLabel lblNewLabel = new JLabel("");
lblNewLabel.setBackground(new Color(224, 255, 255));
lblNewLabel.setFont(new Font(“Tahoma”, Font.PLAIN, 14));
lblNewLabel.setForeground(Color.MAGENTA);
lblNewLabel.setIcon(new
ImageIcon(main.class.getResource("/view/gostosa.png")));
lblNewLabel.setBounds(0, 0, 376, 424);
contentPane.add(lblNewLabel);
}
}
esta classe vai ser responsável para chamar a segunda jframe da classe login.java

e esta e a segunda jframe classe login.java:

package view;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import javax.swing.JProgressBar;
import java.awt.Color;
public class login extends JPanel {
/**

  • Create the panel.
    */
    public login() {
    setLayout(null);
    JProgressBar progressBar = new JProgressBar();
    progressBar.setIndeterminate(true);
    progressBar.setStringPainted(true);
    progressBar.setForeground(Color.GREEN);
    progressBar.setBackground(Color.WHITE);
    progressBar.setBounds(0, 392, 248, 24);
    add(progressBar);
    JLabel label = new JLabel("");
    label.setIcon(new
    ImageIcon(login.class.getResource("/view/Linda.png")));
    label.setBounds(0, 0, 340, 427);
    add(label);
    }
    }
    nela tem um splash screen(carregamento).

Cara, o que ta acontecendo? Tá dando erro? Tá o que?

e o seguinte,nesta parte do ActionListener não sei o que fazer,não sei que comando dar para o JButton PLAY acionar a classe login.

Faz isso:

btnMenu.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
login lg = new login();
login.setVisible(true);
dispose();
}
});

fiz e não funcionou,aproposito como colocar um som no botão?

Vc usa alguma IDE? Não é tão complicado chamar outra tela.

Som

cara e porque me identifico mais com o programa Java Eclipse,o que seria IDE?acho que no caso do Java Eclipse para acionar um áudio precisa-si criar uma classe e um pacote certo.

Acho que vcs se confundiram:

  • tem o JFrame main
  • tem o JPanel login

Vc gostaria que do main abrisse o login através do botão play, nesse caso:

JDialog dialogLogin = new JDialog(); // instancia
dialogLogin.setContentPane(new login()); // atribui o JPanel login
dialogLogin.setModal(true); // bloqueia as outras janelas (opcional)
dialogLogin.pack(); // corrige o tamanho da janela (recomendável / opcional)
dialogLogin.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); // desejável para os dialogs
dialogLogin.setVisible(true); // exibe

pode usar JFrame em vez do JDialog

JFrame frameLogin = new JFrame(); // instancia
frameLogin.setContentPane(new login()); // atribui o JPanel login
// frameLogin.setModal(true); // JFrame não possui esta função
frameLogin.pack(); // corrige o tamanho da janela (recomendável / opcional)
frameLogin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // desejável para os JFrames
frameLogin.setVisible(true); // exibe
1 curtida

cara eu gostei deste método mas não chamou a jframe login,gostaria de saber como fazer a barra de login do meu segundo jframe login carregar junto com a numeração até atingir 100%

Procure em sites de buscas “splash screen java”, vai encontrar varias formas de fazer isso:

https://docs.oracle.com/javase/tutorial/uiswing/misc/splashscreen.html

    public void actionPerformed(ActionEvent arg0) {

    login loginPanel = new login();
    JDialog dialogLogin = new JDialog(); // instancia
    dialogLogin.setContentPane(loginPanel); // atribui o JPanel login
    dialogLogin.setModal(false); // desbloqueia as outras janelas, necessário, senão vai travar
    dialogLogin.pack(); // corrige o tamanho da janela (recomendável / opcional)
    dialogLogin.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); // desejável para os dialogs
    dialogLogin.setVisible(true); // exibe

    for(int i=0; i<100; i++) {
        loginPanel.atualizarBarra(i); // atualiza a barra ou porcentagem
        try {
            Thread.sleep(90); // aguarda 90 milisegundos
        }
        catch(InterruptedException e) {
        }
    }
    dialogLogin.dispose(); // fechar a janela, não sei se é necessario
    }
1 curtida

muito muito bom mesmo,agora e o seguinte cara,a minha primeira jframe aparece a imagem normal quando aperto run,mas quando vou apertar run na jpainel( segunda jframe) a imagem e a mesma da primeira jframe,o que fazer para que apareça a imagem normal da segunda jframe?

Se na primeira funciona, então fazendo igual na segunda irá funcionar também

só pra tirar dúvidas existe um programa mais fácil e mais eficiente que o java eclipse?