O AWT nos oferece uma gama de possibilidades quando falamos sobre manipulação de janelas. Hoje falarei sobre duas destas possibilidades com a classe AWTUtilities.
Deixando a janela transparente
Para deixar uma Window (JFrame, JDialog e etc) transparente, você deve usar o método AWTUtilities.setWindowOpacity. Este método recebe como parâmetro a janela que deve ser alterada e o grau de transparência, que varia entre 0 (zero) e 1, sendo 0 (zero) invisível e 1 totalmente visível.
JFrame window = new JFrame("Minha janela");
//70% de transparência
AWTUtilities.setWindowOpacity(window, .7f);
window.setSize(800,600);
window.setVisible(true);
Alterando a forma da janela
Para alterar a forma da janela você deve usar o método AWTUtilities.setWindowShape. Este método recebe como parâmetro a janela que deve ser alterada e a forma (java.awt.Shape) que a janela deverá assumir.
A forma mais eficiente de usar este método é através do componentResized(), pois você poderá recalcular o tamanho da janela para não deforma-la ou não perder os componentes de vista.
Aqui deixaremos nossa janela com a forma de um triângulo com 70% de transparência.
final JFrame window = new JFrame("Minha janela");
try {
//Adicionando o ComponentListener responsável pelo componentResized
window.addComponentListener(new ComponentAdapter(){
@Override
//implementando o método componentResized
public void componentResized(ComponentEvent e) {
int[] x = {0,400,800}; //Pontos X do polígono
int[] y = {600,0,600}; //Pontos Y do polígono
//Criaremos um triângulo de 800 x 600
Shape shape = new Polygon(x, y, 3);
AWTUtilities.setWindowShape(window, shape);
//com transparência de 70%
AWTUtilities.setWindowOpacity(window, 0.7f);
}
});
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
window.setUndecorated(true); //removendo barra de título
window.setSize(800,600);
window.setVisible(true);
Repare que invoquei o método setUndecorated( ) passando o valor true, este método é responsável por ocultar a barra de título (aquele com o ícone e os botões de maximizar, minimizar e fechar) que, se estiver visível, o método AWTUtilities.setWindowShape( ) não surtirá efeito.
Espero que tenham gostado e até a próxima!
//Pontos X do polígono


dezembro 29th, 2010 on 18:10
Você chamou o método window.setUndecorated();? Você deve definí-lo como true para que funcione.
dezembro 29th, 2010 on 17:10
Amigo, eu fiz tudo que está aí, a janela ficou invisivel mas teve um porém que o triangulo não aparece de jeito nenhum
junho 2nd, 2010 on 12:36
Dá p/ fzr sim, uma vez que você só usa o código Java, a IDE não influencia em nada.
O que pode acontecer é o editor do código-fonte bloquear a edição, assim como acontece no NetBeans, mas aí é só desabilitar esta opção. Como nunca usei o JCreator não sei te responder onde altera.
[]‘s
junho 2nd, 2010 on 10:50
perfeito…mas tem como fazer isso no Jcreator??? parece k a maioria usa o eclipse…!!!