簡體   English   中英

為什么我的JButton出現JFrame的完整大小?

[英]Why does my JButton appear the full size of the JFrame?

我是新手,有一個問題。 我正在嘗試使用Eclipse編寫Java Windows應用程序,其中將有一個主窗口,其中將包含諸如儀表板之類的幾項內容,並且將具有按鈕,例如向數據庫添加記錄。 ,然后按此按鈕將在頂部打開一個新的相關窗口。

我試圖開始,我用Java編寫了這段代碼,由於某種原因,按鈕的大小與框架的大小...全屏相同! 我如何解決它 ?

您能為我提供比我指定的更好的設計想法嗎?

謝謝

public class MainClass {

public static void main(String[] args) {
    // TODO Auto-generated method stub

    JFrame  jfrm = new JFrame("Frame1");
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    jfrm.setSize(screenSize.width, screenSize.height);
    jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JLabel jlab = new JLabel("Hello");
    jfrm.add(jlab);

    JButton button = new JButton("Button");
    button.setSize(new Dimension(50, 50));
    button.setLocation(500, 350);
    jfrm.getContentPane().add(button);

    jfrm.setVisible(true);  
}

首先將布局添加到JFrame。 例如FlowLayout

jfrm.setLayout(new FlowLayout());

“我試圖開始,我用Java編寫了這段代碼,由於某種原因,按鈕的大小與框架的大小相同……全屏!我該如何解決呢?”

按鈕伸展的原因是因為JFrame具有默認的BorderLayout ,它不遵守子組件的首選大小。

解決方案是將“布局管理器”設置為遵循首選大小的布局。 此示例中的圖像顯示了最常見的布局管理器,並直觀地顯示了哪個遵循子組件的首選大小。

此外, BorderLayout也是您的JLabel不顯示的原因。 默認情況下,添加到BorderLayout且未指定位置(例如BorderLayout.SOUTH每個組件都將自動放置在BorderLayout.CENTER位置。 每個職位可能只有一個組成部分。 因此,當您添加JLabel它會進入CENTER ,但是當您添加JButton ,它也將進入CENTER ,踢出JLabel

如果您從未遇到過布局管理器,那么這可能會讓您感到困惑。 您應該花些時間研究如何在容器中布局組件

在此處輸入圖片說明

您必須使用布局管理器

使用此代碼。

 public static void main(String[] args) 
{

JFrame  jfrm = new JFrame("Frame1");
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
jfrm.setSize(screenSize.width, screenSize.height);
jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel jlab = new JLabel("Hello");
jfrm.add(jlab);

JButton button = new JButton("Button");
button.setSize(new Dimension(50, 50));
button.setLocation(500, 350);
jfrm.add(button);
jfrm.setVisible(true);  
jfrm.setLayout(new FlowLayout());
jfrm.pack();

您忘記添加pack() 因此,請使用此代碼並排獲取Jlabel和JButtion。

謝謝...

您需要使用某種形式的layoutmanager,可以使用以下信息: http : //docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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