Pessoal queria tirar 1 duvida besta a respeito de como incrementar o “Look” de uma aplicacao desktop. Seguinte, eu ja fiz algumas apps desktop em Java, mas sem mexer em imagem de botao e tals, deixando td padrao Java mesmo, aquele velho e bom cinza q estamos acostumados a ver. So que agora vo precisar dar 1 incrementada no “Look” dos programas. Ai eu vi uma janela de um programa personalizada e achei interessante. Esta aqui:
Achei bem legal e tals e queria confirmar se p mudar o “Look” eh do jeito q to pensando.
Tipo, ele deixou desse jeito so subtituindo a imagem dos botoes por jpges, pngs, gifs, etc nos jbutton, jpanel, jlabel, etc, eh isso msm? O efeito de rollover do botao qnd coloca o mouse em cima, qnd clica, eh obtido nas configs do proprio jbutton? Pelo q entendi, essa personalizacao eh semelhante ao desenvolver e organizar de imagens em site web, so q num programa desktop, eh por ai?
Quem ja tem pratica nisso, poderia me dar uns toques, por enqto vo vendo se desenrrolo algo, vlw…
agora 1 coisa q n consegui acertar eh como ele colocou esse fundo atras, pq so consegui fazer isso usando jlabel, mas n tem como por componentes em cima do jlabel…
lauro, ela n vem como fundo padrao nao, eu usei esse look and feel da figura e nao saiu c esse fundo, o cara pegou uma das imagens dela q tem esse fundo e fez uma “arrumadinha” ai p ficar c esse fundo, pelo menos eu usei aqui e nao consegui deixar ele assim c esse fundo.
esse metodo “SubstanceLookAndFeel.setSkin()” serve pra q?
vo deixar o arquivo do Look and Feel pra vc ve q nao vem como padrao esse fundo (pelo menos pelo oq testei aqui, so vi ele como fundo d alguns componentes, mas do JPanel por exemplo, ele nao eh padrao):
se vc quer colocar um fundo num jpanel… é complicado mesmo…
escrevi uma classe que faz isso:
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.image.BufferedImage;
import javax.swing.border.Border;
public class FundoSistema implements Border {
private final BufferedImage imagem;
public FundoSistema() {
BufferedImage fundo = null;
try {
fundo = ImageIO.read(new File("grafico/imagens/fundo.png"));
} catch (IOException e1) {
e1.printStackTrace();
}
this.imagem = fundo;
}
public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
// No Centro
int x0 = x + (width-imagem.getWidth())/2;
int y0 = y + (height-imagem.getHeight())/2;
g.drawImage(imagem, x0, y0, null);
}
public Insets getBorderInsets(Component c) {
return new Insets(0,0,0,0);
}
public boolean isBorderOpaque() {
return true;
}
}