Dúvida com JFrame

5 respostas
neofito

Boa tarde galera…

Alguém sabe como eu faço um JFrame sem borda (sem aqueles botõezinhos “minimizar”, “maximizar” e “fechar” )? Eu quero fazer uma telinha com o nome da minha aplicação, tipo aquela que aparece quando iniciamos o Eclipse, e que fica lá até que ele seja carregado por completo… Uma telinha sem nenhuma funcionalidade, que apenas salte na cara do usuário quando ele iniciar a aplicação, e que fique lá até ela ser carregada.
Talvez seja algo relacinado à [color=“orange”]JFrame.setDefaultLookAndFeelDecorated(true)[/color], e depois setar alguma propriedade…

… se alguém puder ajudar…

Valeuz!!! :wink:

5 Respostas

jcranky
seuFrame.setUndecorated( true );
danieldestro

Aqui no GUJ tem um artigo de como criar um Splash Screen.

B

Seria um splash Scream

segue o codigo ai

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.GraphicsConfiguration;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.awt.Window;
import java.awt.Cursor;

/**
 * Criado em Domingo 05 de setembro as 18:03 pm
 * @author Luas
*/
public class Splash extends Window
{
	// Mensagem a ser mostrada junto com a imagem
	private final String message = "Controle Portaria";

	// Imagem que ira aparecer no Splash
	private final String imgName = "splash_guj.jpg";
	Image splashImage;
	Toolkit toolkit;
	private static Splash splash;

	// Singleton pra garantir apenas uma unica instancia na memoria
	static {
		splash = new Splash();
	}

	private Splash()
	{
		super(new Frame());
		System.out.println("Criando Splash()...");
		setVisible(false);

		splashImage = null;
		toolkit = Toolkit.getDefaultToolkit();
	}

	public static Splash getInstance()
	{
		return splash;
	}

	/**
	 * Method initSplash.
	 */
	private void initSplash()
	{
		// Carrega a imagem na memoria
		MediaTracker media = new MediaTracker(this);
		splashImage = toolkit.getImage(imgName);

		if (splashImage != null) {
			media.addImage(splashImage, 0);

			try {
				media.waitForID(0);
			}
			catch (InterruptedException ie) {}
		}

		// Configura o tamanho do splash e a posicao na tela
		setSize(splashImage.getWidth(this), splashImage.getHeight(this));

		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		Dimension size = getSize();

		if (size.width > screenSize.width)
			size.width = screenSize.width;

		if (size.height > screenSize.height)
			size.height = screenSize.height;

		setLocation((screenSize.width - size.width) / 2, (screenSize.height - size.height) / 2);
		setVisible(true);
	}

	public void openSplash()
	{
		setCursor(new Cursor(Cursor.WAIT_CURSOR));
		initSplash();
	}

	public void finish()
	{
		setVisible(false);
		dispose();
	}

	public void paint(Graphics g)
	{
		// Apenas desenha a nossa mensagem em cima da imagem
		g.drawImage(splashImage, 0, 0, getBackground(), this);
		g.setFont(new Font("Arial", Font.BOLD, 20));
		g.setColor(new Color(180,80,180));
		g.drawString(message, (int)(splashImage.getWidth(this) / 2) - 80, 30);
	}

}

Janela dos que tem um laço for que vai do 1 até 5000
ai abre seu programa

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

class Botoes extends JFrame
{
	JButton botao;
	JFrame frame;
	JPanel panel;

	/**
	 * Construtor da aplicacao principal.
	 * Simula um load demorado com um loop, para mostrar que
	 * a tela Splash realmente aparece enquanto a aplicacao
	 * principal eh carregada.
	 * */
	public Botoes()
	{
		for (int i = 0; i < 5000; i++)
			System.out.println(i);

		frame = new JFrame("Botoes");
		panel = new JPanel();

		panel.setLayout(new GridLayout(4, 1));

		botao = new JButton("Aplicacao inicializada");
		botao.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e)
			{
				System.exit(0);
			}
		});

		panel.add(botao);

		frame.getContentPane().add(panel, BorderLayout.CENTER);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	public void initApplication()
	{
		frame.pack();
		frame.setVisible(true);

		Splash.getInstance().finish();
	}
}

Agora no seu programa
chame eles assim

public static void main(String args[])
      {
	      Splash.getInstance().openSplash();
	      Botoes b = new Botoes();
		  b.initApplication();
	      ControlPortal application = new ControlPortal();
	      application.setDefaultCloseOperation(
	      JFrame.EXIT_ON_CLOSE);
      }

Ok

neofito

Valeuz, galera…

Por isso que eu gosto aqui do GUJ… :wink:

B

private final String imgName = “splash_guj.jpg”;

aqui voce coloca a imagem que voce tem no seu computador

Criado 14 de setembro de 2004
Ultima resposta 14 de set. de 2004
Respostas 5
Participantes 4