我在互联网上任何地方都找不到答案,所以我在这里。
具有背景的JFrame
这是我目前拥有的,上面写着“德克萨斯州凯蒂的五旬节派”徽标,以及我的版权符号。
我希望徽标位于底部,而版权则位于右下方。这是构建框架的所有代码:
//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);
}
}
任何帮助将不胜感激!谢谢!
答案 0 :(得分:1)
使用Box.createGlue()将对象放置在屏幕底部吗?
然后,您需要使用BoxLayout
。阅读有关How to Use BoxLayout的Swing教程中的部分,以获取入门的示例。
组件位于中间的原因是因为您使用的是GridBagLayout,除非您指定weightx / y,否则组件将居中。阅读How to Use GridBagLayout上的教程,以获取有关这些约束的更多信息。
注意,您永远不会被迫使用单个布局管理器。因此,也许主面板使用BoxLayout。然后,您使用适当的布局管理器创建另外两个面板。然后,您可以使用Box.createGlue()将底部面板与顶部面板分开。