Re:Aplicação com Tela em formato circular

É possivel sim.

Tem um artigo completo sobre isso aqui:
http://www.onjava.com/pub/a/onjava/excerpt/swinghks_hack41/index.html

Esse é um artigo extraído do livro Swing Hacks, escrito por Joshua Marinacci e Chris Adamson.

Grande abraço,
Hugo.

Bem, sobre esse snapBackground, se tá funcionando sem devem ter colocado e esquecido de tirar antes mesmo

Sobre a forma da imagem, é só colocar lá um JLabel com ela no meio do form e pronto, lembrando que a imagem deve ter o fundo transparente. Ou ainda criando um componente para desenhar ela no fundo, tipo um JPanel, para poder colocar uns botões em cima e tal…

flw

Dá uma olhada nesse código …

Obs: as duas imagens que vc postou, nenhum tá com fundo trasparente

[code]
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import javax.swing.JComponent;

public class TransparentBackground extends JComponent{
private Image background;

public TransparentBackground() {
	updateBackground();
}

public void updateBackground() {		
	try {
		Robot rbt = new Robot();
		Toolkit tk = Toolkit.getDefaultToolkit();
		Dimension dim = tk.getScreenSize();
		background = rbt.createScreenCapture(new Rectangle(0, 0, (int) dim
				.getWidth(), (int) dim.getHeight()));
	} catch (Exception ex) {
		ex.printStackTrace();
	}	
}

public void paintComponent(Graphics g) {
	Point pos = this.getLocationOnScreen();
	Point offset = new Point(-pos.x, -pos.y);
	g.drawImage(background, offset.x, offset.y, null);
}

}[/code]

[code]import java.awt.BorderLayout;
import java.awt.Point;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowFocusListener;
import java.util.Date;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class MyFrame extends JFrame implements
ComponentListener,WindowFocusListener,Runnable {

private TransparentBackground transpPanel = null;
private boolean refreshRequested = true;
private long lastupdate = 0;


public MyFrame() {
	setUndecorated(true);
	setSize(500, 500);
	setLocation(20, 20);	    
	getContentPane().add(getPanelComponents());
	addComponentListener(this);
	addWindowFocusListener(this);
	new Thread(this).start( );
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	setVisible(true);
}

private JComponent getPanelComponents() {
			
	transpPanel = new TransparentBackground();
	BorderLayout layout = new BorderLayout();
	transpPanel.setLayout(layout);
	
	ImageIcon icon = createImageIcon("BOLA-NIKE.jpg",
    "imagem mascote java");
	
	JLabel label = new JLabel(icon);
	transpPanel.add(label);;
    	
	return transpPanel;
}

		
/** Returns an ImageIcon, or null if the path was invalid. */
protected static ImageIcon createImageIcon(String path,
                                           String description) {
    java.net.URL imgURL = MyFrame.class.getResource(path);
    if (imgURL != null) {
        return new ImageIcon(imgURL, description);
    } else {
        System.err.println("Couldn't find file: " + path);
        return null;
    }
}

public void refresh( ) {
    if(isVisible( )) {
        repaint( );
        refreshRequested = true;
        lastupdate = new Date( ).getTime( );
    }
}
public void run( ) {
    try {
        while(true) {
            Thread.sleep(1);
            long now = new Date( ).getTime( );
            if(refreshRequested &&
                ((now - lastupdate) > 1000)) {
                if(isVisible( )) {
                    Point location = getLocation( );
                    setVisible(false);
                    transpPanel.updateBackground( );
                    setVisible(true);
                    setLocation(location);
                    refresh( );
                }
                lastupdate = now;
                refreshRequested = false;
                }
            }
        } catch (Exception ex) {
            ex.printStackTrace( );
        } 
    }

public void componentShown(ComponentEvent evt) { repaint( ); }
public void componentResized(ComponentEvent evt) { repaint( ); }
public void componentMoved(ComponentEvent evt) { repaint( ); }
public void componentHidden(ComponentEvent evt) { }

public void windowGainedFocus(WindowEvent evt) { refresh( ); }    
public void windowLostFocus(WindowEvent evt) { refresh( ); }

 
public static void main(String[] args){
	MyFrame fr = new MyFrame();
}

}[/code]

Ghostt,

poderia me passar a sua solução para este problema?

Valeu!

Pessoal,

É possivel criar uma aplicação que ela possua uma imagem de fundo, por exemplo, uma foto de uma bola, onde apenas a bola apareça, onde a imagem possue area transparente ao seu redor, e a aplicação possua o formato da bola (formato circular), deixando de mostra a área transparente?
É possivel isso?

Obrigado pela atenção!

Valeu Hugo!

Vou dar uma olhada no site e ver o que consigo resolver!

Obrigado!
Aquele abraço!

Entrei no site, fiz alguns testes, mas quando fui alterar a parte:

[code]public static void main(String[] args) {
JFrame frame = new JFrame(“Transparent Window”);
frame.setUndecorated(true);

TransparentBackground bg = new TransparentBackground(frame);
bg.snapBackground( );
bg.setLayout(new BorderLayout( ));

JPanel panel = new JPanel( ) {
public void paintComponent(Graphics g) {
g.setColor(Color.blue);
Image img = new ImageIcon(“mp3.png”).getImage( );
g.drawImage(img,0,0,null);
}
};
panel.setOpaque(false);

bg.add("Center",panel);

frame.getContentPane( ).add("Center",bg);
frame.pack( );
frame.setSize(200,200);
frame.setLocation(500,500);
frame.show( );

}[/code]
Ocorreu um erro em:

Dizendo que não encontrava este método, de fato, ele não existe no codigo…
Inserir esta linha pq tenho necessidade de utilizar uma imagem, para usar o trecho acima desabilitei o:

Mas ai não funcionou corretamente.
Segue abaixo o codigo completo:

[code]import javax.swing.;
import java.awt.
;
import java.awt.event.;
import java.awt.image.
;

public class TransparentBackground extends JComponent

	implements ComponentListener, WindowFocusListener, Runnable 

{
private JFrame _frame;
private BufferedImage _background;
private long _lastUpdate = 0;
private boolean _refreshRequested = true;
private Robot _robot;
private Rectangle _screenRect;
private ConvolveOp _blurOp;

// constructor -------------------------------------------------------------
public TransparentBackground(JFrame frame) 
{
	_frame = frame;
	try 
	{
		_robot = new Robot();

	}
	catch (AWTException e) 
	{
		e.printStackTrace();
		return;

	}

	Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();

	_screenRect = new Rectangle(dim.width, dim.height);

	float[] my_kernel = 
	{
			0.10f, 0.10f, 0.10f,
			0.10f, 0.20f, 0.10f,
			0.10f, 0.10f, 0.10f};

	_blurOp = new ConvolveOp(new Kernel(3, 3, my_kernel));

	updateBackground();

	_frame.addComponentListener(this);
	_frame.addWindowFocusListener(this);

	new Thread(this).start();

}

// protected ---------------------------------------------------------------
protected void updateBackground() 
{
	_background = _robot.createScreenCapture(_screenRect);
}

protected void refresh() 
{
	if (_frame.isVisible() && this.isVisible()) 
	{
		repaint();
		_refreshRequested = true;
		_lastUpdate = System.currentTimeMillis();
	}
}

// JComponent --------------------------------------------------------------
protected void paintComponent(Graphics g) 
{
	Graphics2D g2 = (Graphics2D) g;
	Point pos = this.getLocationOnScreen();
	BufferedImage buf = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_RGB);
	buf.getGraphics().drawImage(_background, -pos.x, -pos.y, null);

	Image img = _blurOp.filter(buf, null);
	g2.drawImage(img, 0, 0, null);
	g2.setColor(new Color(255, 255, 255, 192));
	g2.fillRect(0, 0, getWidth(), getHeight());
}

// ComponentListener -------------------------------------------------------
public void componentHidden(ComponentEvent e) {	}
public void componentMoved(ComponentEvent e) 
{
	repaint();
}

public void componentResized(ComponentEvent e) 
{
	repaint();
}

public void componentShown(ComponentEvent e) 
{
	repaint();
}

// WindowFocusListener -----------------------------------------------------
public void windowGainedFocus(WindowEvent e) 
{
	refresh();
}

public void windowLostFocus(WindowEvent e) 
{
	refresh();
}

// Runnable ----------------------------------------------------------------
public void run() 
{
	try 
	{
		while (true) 
		{
			Thread.sleep(100);
			long now = System.currentTimeMillis();
			if (_refreshRequested && ((now - _lastUpdate) > 1000)) 
			{
				if (_frame.isVisible()) 
				{
					Point location = _frame.getLocation();
					_frame.setLocation(-_frame.getWidth(), -_frame.getHeight());
					updateBackground();
					_frame.setLocation(location);
					refresh();
				}
				_lastUpdate = now;
				_refreshRequested = false;
			}
		}
	}
	catch (InterruptedException e) 
	{
		e.printStackTrace();
	}
}
public static void main(String[] args) 
{
	JFrame frame = new JFrame("Transparent Window");
    frame.setUndecorated(true);
    
    TransparentBackground bg = new TransparentBackground(frame);
    //bg.snapBackground( );
    bg.setLayout(new BorderLayout( ));

	JPanel panel = new JPanel( ) 
	{
	    public void paintComponent(Graphics g) 
	    { 
	        g.setColor(Color.blue);
	        Image img = new ImageIcon("duke.png").getImage( ); 
	        g.drawImage(img,0,0,null);
	    }
	};
    panel.setOpaque(false);
    bg.add("Center",panel);
    frame.getContentPane( ).add("Center",bg);
    frame.pack( );
    frame.setSize(200,200);
    frame.setLocation(500,500);
    frame.show( );
}

}[/code]
Como eu resolvo este problema?
Primeiro fazer o form ficar com o formato da imagem e segundo, a falta de codigo… Qual será o processo realizado dentro do snapBackground( ); :?:

Valeu Eduardo!!!

Sua dica foi muito importante no processo!!!

Obrigado :!: :thumbup:

Valeu Rodrigo!

De tanto procurar na net acabei achando um código onde demonstrava corretamente a transparencia.
Também utilizei o seu código!

Obrigado a todos pela ajuda :!: :thumbup: