[英]Why doesn't my button position properly on my JFrame no layout?
因此,我有一個使用setLayout(null)
的JFrame,以便可以手動setLayout(null)
元素。
但是,當訪問內容窗格並獲取框架的大小時,它表示其高度為1.0。
有誰知道我該如何解決?
這是代碼:
import javax.swing.*;
import java.awt.*;
public class Launcher extends JFrame
{
public Launcher(String title) {
super(title);
setLayout(null);
pack();
setSize(new Dimension(LauncherUtil.LAUNCHER_WIDTH, LauncherUtil.LAUNCHER_HEIGHT));
setLocationRelativeTo(null);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
displayComponents();
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
Launcher launch = new Launcher(LauncherUtil.LAUNCHER_TITLE);
launch.setVisible(true);
}
});
}
private void displayComponents() {
Dimension size = getContentPane().getSize();
JButton launchButton = new JButton("Launch Game");
System.out.println(size.getHeight());
launchButton.setBounds(0, (int)size.getHeight() - 60, (int)size.getWidth(), 60);
add(launchButton);
}
}
可能是如果您嘗試通過使用工具包來獲取屏幕尺寸,則可能會如您所願
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
它帶給您運行Java程序的屏幕尺寸。 希望能幫助到你。
內容窗格是一個JPanel
其默認大小為1x1px。 由於您沒有在內容窗格中放置任何組件,也沒有為面板設置首選大小,因此內容窗格的大小仍為1x1px。
解決此問題的一種方法是按以下順序調用這三種方法:
setLayout(null);
setPreferredSize(new Dimension(300, 400));
pack();
但是,您應該使用布局管理器,而不是手動管理組件的大小和位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.