JAVA-使用Box.createGlue()将对象放置在屏幕底部?

时间:2018-06-25 13:16:03

标签: java swing

我在互联网上任何地方都找不到答案,所以我在这里。

具有背景的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 :(得分:1)

  

使用Box.createGlue()将对象放置在屏幕底部吗?

然后,您需要使用BoxLayout。阅读有关How to Use BoxLayout的Swing教程中的部分,以获取入门的示例。

组件位于中间的原因是因为您使用的是GridBagLayout,除非您指定weightx / y,否则组件将居中。阅读How to Use GridBagLayout上的教程,以获取有关这些约束的更多信息。

注意,您永远不会被迫使用单个布局管理器。因此,也许主面板使用BoxLayout。然后,您使用适当的布局管理器创建另外两个面板。然后,您可以使用Box.createGlue()将底部面板与顶部面板分开。