我正在使用 Java GUI,并且遇到了 JLabel.setVerticalAlignment
。我已经设置了一些东西,以便curlLeft 和curlRight 可以到达角落。然而,它似乎没有任何效果。为什么会这样?
private void prepareGUI() throws IOException {
mainFrame = new JFrame("Holy Bible");
mainFrame.setSize(700, 500);
mainFrame.setLayout(new GridLayout(1, 2));
mainFrame.setLocationRelativeTo(null);
mainFrame.setIconImage(new ImageIcon(getClass().getResource("/assets/bible/textures/icon.png")).getImage());
mainFrame.getContentPane().setBackground(Color.WHITE);
mainFrame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent windowEvent) {
System.exit(0);
}
});
mainFrame.addKeyListener(this);
leftPanel = new JPanel();
leftPanel.setBackground(Color.WHITE);
leftPanel.setLayout(new FlowLayout());
rightPanel = new JPanel();
rightPanel.setBackground(Color.WHITE);
rightPanel.setLayout(new FlowLayout());
leftLabel = new JLabel("", JLabel.CENTER);
leftLabel.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 12));
leftPanel.add(leftLabel);
rightLabel = new JLabel("", JLabel.CENTER);
rightLabel.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 12));
rightPanel.add(rightLabel);
leftCurl = new JLabel();
leftCurl.setHorizontalAlignment(JLabel.LEFT);
leftCurl.setVerticalAlignment(JLabel.BOTTOM);
leftCurl.setIcon(new ImageIcon(getClass().getResource("/assets/bible/textures/curlleft15.png")));
leftPanel.add(leftCurl);
rightCurl = new JLabel();
rightCurl.setHorizontalAlignment(JLabel.RIGHT);
rightCurl.setVerticalAlignment(JLabel.BOTTOM);
rightCurl.setIcon(new ImageIcon(getClass().getResource("/assets/bible/textures/curlright15.png")));
rightPanel.add(rightCurl, BorderLayout.SOUTH);
mainFrame.add(leftPanel);
mainFrame.add(rightPanel);
mainFrame.setExtendedState(JFrame.MAXIMIZED_BOTH); // Maximizes frame
mainFrame.setUndecorated(fullScreen);
mainFrame.setVisible(true);
}
所有需要的变量都在类级别初始化。
最佳答案
您的 JLabels
不会到达角落,因为您要将它们添加到具有 FLowLayout
的 JPanel
中。使用 FlowLayout
,您的组件不会占用 JPanel
100% 的空间,它们只占用必要的空间。
我将 2 个 FlowLayouts
更改为 GridLayouts
,现在我可以看到不同的方向。
(另外,由于您的目标是了解其工作原理,因此我建议您在每个组件上设置一个边框,以便您可以看到它们的边界在哪里。这对于理解 Swing 的布局管理非常有用)。
关于java - 我对 setVertical/HorizontalAlignment 做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27790843/