我的 JFrame 中有一个 JLabel
,最初使用 pack()
显示。
我的问题是,每当我尝试调整窗口大小时,JLabel
也会移动(取决于调整窗口的哪一侧大小),这主要是由于 JFrame 的布局所致。
更具体地说,每当我向上/向下调整窗口大小时,JLabel
都会保持居中。我希望情况并非如此。
如果我的问题令人困惑,我很抱歉。如果需要,我很乐意提供图表。
public class JavaApplication8 {
public static void main(String[] args) throws MalformedURLException {
// TODO code application logic here
JFrame window = new JFrame("test");
URL bgURL = new URL("https://si0.twimg.com/profile_images/3585146044/3b695fa73490227f792fa4e46d4a7a57.jpeg");
ImageIcon bg = new ImageIcon(bgURL);
JLabel label = new JLabel(bg);
window.add(label, BorderLayout.CENTER);
window.pack();
window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
window.setLocationRelativeTo(null);
window.setVisible(true);
}
}
最佳答案
使用不同的布局管理器:
window.setLayout(new FlowLayout());
对于这个例子来说就足够了。
如果您想继续使用 BorderLayout
,另一种可能性是将标签放置到不同的位置:
window.add(label, BorderLayout.NORTH);
另请注意,您应该仅从 event dispatch thread 访问 swing 组件.
关于java - 将单独的组件锚定在 JFrame 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18399857/