簡體   English   中英

為什么我的按鈕在我的JFrame無布局上無法正確定位?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM