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

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?

Tem o NetBeans que é muito parecido com o Eclipse, prefiro o Eclipse por ser mais leve e mais rápido.
Tem o intellij, é bom mas muito lento.
Tem também o BlueJ, mas uso este somente para projetos pequenos, pois é o mais leve.

Para fazer a parte visual da aplicação, o NetBeans vem com editor de design, sei que existe um plugin para o Eclipse mas nunca usei.

O Intellij tem varias ferramentas que ajudam no código, mas por ser muito lento, nunca fiz um projeto.

O BlueJ é melhor para quem está começando estudar a linguagem, permite executar um método do projeto sem a necessidade de compilar todo o projeto, bom para fazer testes.

Atualmente não estou programando em Java, mas eu usava mais o Eclipse e BlueJ.

o que são classes e os pacotes?para que servem?
o que é git? eo que e XML?

estive dando mais uma olhada na minha segunda jframe login.java e resolve colocar o console executei o programa e apareceu a mensagem:

Erro: o método main não foi encontrado na classe view.login; defina o método main como:
public static void main(String[] args)
ou uma classe de aplicativo JavaFX deve expandir javafx.application.Application

como criar isto?

basta definir "o método main como: public static void main(String[] args)" na classe view.login

para que serve o console no java eclipse?

foi apertar run em minha jframe main e apareceu a mensagem abaixo usando o console:
Exception in thread “main” java.lang.Error: Unresolved compilation problem:
ele indica que o problema e o public static void main(String[] args) { o que fazer?