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