Centralizar botões em JFrame

Bom dia! Eu preciso de ajuda para centralizar dois JButtons inseridos num JFrame, já busquei em muitos sites, tentei implementar o que foi exposto, porém quando executo os botões só aparecem no centro superior da janela, e isso acaba sendo ruim logo que uso uma imagem de fundo onde o logotipo se encontra nesse mesmo local. O código segue logo abaixo:

public class Interface extends JFrame {
JButton buttonAdm = new JButton(“Administrador”);
JButton buttonUser = new JButton(“Usuário”);
public Interface(String text) throws IOException {

    super(text);
    setDefaultLookAndFeelDecorated(true);
    JImagePanel panel = new JImagePanel(
            loadImage("C:\\Users\\matee\\Documents\\Material Academico\\Desenvolvimento PBL 3\\RoadTrip\\src\\br\\uefs\\ecomp\\roadtrip\\view\\RoadTrips.jpg"));
    panel.add(buttonAdm);
    buttonAdm.setLocation(0, 0);
    add(panel);
    pack();
    setSize(700, 700);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setVisible(true);
}

private static BufferedImage loadImage(String file) throws IOException {
return ImageIO.read(new File(file));
}
}
Obs: Estou usando uma biblioteca externa, TowelProject, usada para inserir a imagem de fundo no frame. Enfim alguém pode tentar me ajudar??

Por acaso você está usando um layout pré definido nesse frame?

Eu nunca usei essa biblioteca.

O JImagePanel é um JPanel, então tente o seguinte:

JImagePanel panel = new JImagePanel(
        loadImage("C:\\Users\\matee\\Documents\\Material Academico\\Desenvolvimento PBL 3\\RoadTrip\\src\\br\\uefs\\ecomp\\roadtrip\\view\\RoadTrips.jpg"));

panel.setLayout(new BorderLayout());

JPanel botoesPanel = new Jpanel(new FlowLayout());
botoesPanel.add(buttonAdm);
botoesPanel.add(buttonUser);
panel.add(botoesPanel, BorderLayout.SOUTH);

add(panel);
pack();

Ou então:

JPanel raiz = new JPanel(new BorderLayout())

JImagePanel panel = new JImagePanel(
        loadImage("C:\\Users\\matee\\Documents\\Material Academico\\Desenvolvimento PBL 3\\RoadTrip\\src\\br\\uefs\\ecomp\\roadtrip\\view\\RoadTrips.jpg"));
raiz.add(panel, BorderLayout.Center);

JPanel botoesPanel = new Jpanel(new FlowLayout());
botoesPanel.add(buttonAdm);
botoesPanel.add(buttonUser);
raiz.add(botoesPanel, BorderLayout.SOUTH);

add(raiz); // raiz
pack();

Vc não disse onde quer os botões, estou supondo que vc quer os botões centralizados e embaixo (BorderLayout.SOUTH).

1 curtida

Não sei bem te dizer, no JFrame não uso, porém eu to usando uma biblioteca externa pra inserir a imagem como fundo da janela e não tenho noção se o panel que to criando ja vem com um layout . :confused: