Centralizar botões em JFrame

3 respostas
java
T

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??

3 Respostas

D

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

D

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).

T

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:

Criado 18 de janeiro de 2018
Ultima resposta 20 de jan. de 2018
Respostas 3
Participantes 3