Olâ pesoal eu coloquei um Jlebel eu queria que ele fica-se centralizada no Jframe
se a ideia é fazer a imagem de background da tela principal do frame
dou a idéia de no frame colocar um jdesktopPane
e sobrescrever o paintComponent
tenta rodar isso ai!
só muda o caminho da imagem
package maisTeste;
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
public class TesteJDeskTopPane extends JFrame{
public TesteJDeskTopPane() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
init();
}
void init(){
JDesktopPane dsk = new JDesktopPane(){
@Override
protected void paintComponent(Graphics g) {
// TODO Auto-generated method stub
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g.create();
try {
String file = new File("").getAbsolutePath().toString();
file = file+"/src/maisTeste/imagem.jpg";
BufferedImage img = ImageIO.read(new File(file));
int left = (this.getHeight() - img.getHeight()) / 2;
int top = (this.getWidth() - img.getWidth()) / 2;
g2.drawImage(img, null, top, left);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
JInternalFrame inter = new JInternalFrame();
inter.add(new JButton("asdasdasdas"));
this.add(inter);
inter.setVisible(true);
inter.setSize(100,100);
this.setLayout(new BorderLayout());
this.add(dsk);
this.setSize(200, 200);
this.setVisible(true);
}
public static void main(String[] args) {
new TesteJDeskTopPane();
}
}
Para saber como centralizar um componente em si, você precisa estudar sobre os gerenciadores de layout.
Se você quiser que o componente estique, uma maneira fácil é usar o BorderLayout:
JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new JButton("Olá!"), BorderLayout.CENTER);
Se você for montar interfaces na mão, dê uma olhada no MigLayout.
E por favor, pare de duplicar tópicos sobre esse assunto. Se ainda tiver dúvida sobre ele, responda aqui mesmo.
bom… tenhu um label e quero le no centro da tela…