Como faço para deixar uma imagem no centro da minha Jframe principal??? tipo quando eu alterar o tamanho da tela a imagem ainda fica no centro da tela??
a tela eu ja tenhu feita é só a parte da imagem no centro q me falta
Cara nao sei se da pra ficar centralizado sempre ms tipo
vc vai ter adicionar um butao ou um label e nele colocar a imagem
simples assim.
Você deve ter colocado um JPanel “root” na sua janela.
Ao invés de usar um JPanel, pode criar um novo e alterar o seu paint:
public static class Panel extends JPanel {
private Image image = ...
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
int x = 0;
int y = 0;
g.drawImage(image, x,y,null);
}
}
Nesse exemplo não está no centro, mas com o tamanho da imagem e o tamanho do painel é possível calcular direitinho o X e Y para centralizar ok?
No lugar do JLabel, use o JImagePanel.
http://www.guj.com.br/posts/list/56248.java#295271
Ele tem a opção de esticar, centralizar ou deixar a imagem lado-a-lado.
Por sinal, evite duplicar tópicos. Sua dúvida é exatamente igual a essa aqui:
http://www.guj.com.br/posts/list/207209.java
Você apenas reformulou a pergunta. Poderia ter feito isso no tópico original.
Fiz algumas alterações no código para ele centralizar direito em um JFrame
@SuppressWarnings("serial")
JPanel content = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
Image imagem = new ImageIcon(getClass().getResource("moneyBucket.png")).getImage();
super.paintComponent(g);
int x = (this.getSize().width - imagem.getWidth(null)) / 2;
int y = (this.getSize().height - imagem.getHeight(null)) / 2;
g.drawImage(imagem, x, y, null);
}
};
this.setContentPane(content);
Espero que ajude!
[quote=brenodepaula]Fiz algumas alterações no código para ele centralizar direito em um JFrame
Espero que ajude![/quote]
Interessante. Mas precisava mesmo ressuscitar um tópico de 4 anos para dar essa resposta?
Outra coisa. Não carregue a imagem dentro do paintComponent. Esse método é chamado com frequencia. Crie o ImageIcon fora (ou, melhor ainda, carregue um BufferedImage com o ImageIO.read) e só use-o dentro do paintComponent.