JAVA - Использование Box.createGlue () для размещения объектов в нижней части экрана? - PullRequest
0 голосов
/ 25 июня 2018

Я искал и не нашел ответа нигде в Интернете, я мог найти, вот и я.

JFrame с фоном

https://i.stack.imgur.com/g9ymV.png

Это то, что у меня сейчас есть, над которым я работаю, логотип «Пятидесятники Кэти, штат Техас», а также символ авторского права.

Я хочу, чтобы логотип был внизу, а авторское право - внизу справа. Вот весь код, который создает фрейм:

//Made by Trey Carey | 6.24.18

import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class loginScreen {
    static String versionNumber = new String("1.0"); //Version Number
    static String applicationName = new String("Lower Thirds SDV " + versionNumber); //Application Name

    public static void main(String[] args) throws IOException {
        createLoginWindow();
    }


    public static void createLoginWindow() throws IOException {     
        JFrame mainFrame = new JFrame(applicationName);

        //Images
        BufferedImage loginImage = ImageIO.read(new File ("src/Lower Thirds SDV PNG Elements/Login_BTN.png"));
        JLabel backgroundImage = new JLabel(new ImageIcon("src/Lower Thirds SDV PNG Elements/Main_BKG.png"));
        JLabel logo = new JLabel(new ImageIcon("src/Lower Thirds SDV PNG Elements/POK Logo.png"));
        JLabel copyrightImage = new JLabel(new ImageIcon("src/Lower Thirds SDV PNG Elements/Copyright.png"));

        GridBagLayout gridBagLayout = new GridBagLayout();
        GridBagConstraints c = new GridBagConstraints();

        mainFrame.add(backgroundImage);
        backgroundImage.setLayout(gridBagLayout);
        //Create Login Button
        JButton loginButton = new JButton(new ImageIcon (loginImage));
        loginButton.setBorder(BorderFactory.createEmptyBorder());

        c.anchor = GridBagConstraints.CENTER;
        c.gridy = 0;
        backgroundImage.add(loginButton, c);
        c.gridy ++;
        backgroundImage.add(copyrightImage, c);
        backgroundImage.add(Box.createGlue(), c);
        c.anchor = GridBagConstraints.PAGE_END;
        c.gridy ++;
        backgroundImage.add(logo, c);


        mainFrame.setResizable(false);
        mainFrame.setLocationRelativeTo(null);
        mainFrame.pack();
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainFrame.setLocationRelativeTo(null);
        mainFrame.setVisible(true);
    }
}

Любая помощь будет принята с благодарностью! Спасибо!

1 Ответ

0 голосов
/ 25 июня 2018

Использование Box.createGlue () для позиционирования объектов в нижней части экрана?

Тогда вам нужно использовать BoxLayout. Прочитайте раздел из учебника по Swing на Как использовать BoxLayout для примеров, с чего можно начать.

Причина, по которой ваши компоненты находятся посередине, заключается в том, что вы используете GridBagLayout, и если вы не укажете весовой коэффициент x / y, компоненты будут отцентрированы. Прочтите руководство по Как использовать GridBagLayout для получения дополнительной информации об этих ограничениях.

Обратите внимание, вы никогда не будете вынуждены использовать один менеджер раскладки. Поэтому, возможно, основная панель использует BoxLayout. Затем вы создаете две другие панели, каждая из которых использует соответствующий менеджер раскладки. Затем вы можете использовать Box.createGlue (), чтобы отделить нижнюю панель от верхней панели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...