Java swing布局详解(附示例图)

当选择使用JPanel和顶层容器的contentpane时,需要考虑布局管理。JPanel缺省是初始化一个FlowLayout,而contentpane缺省是初始化一个BorderLayout。下面将分别介绍几种最常用的布局管理器:FlowLayout、BorderLayout、BoxLayout、CardLayout、GridLayout和GridBagLayout。代码演示每一个布局管理器都会有一个代码演示,xxxLayoutDemo.java(见附件)。这些文件主要有三个方法组成:addComponentsToPane()提供布局逻辑(依据不同的布局管理器和UI内容)。Java代码1publicstaticvoidaddComponentsToPane(Containerpane){。。。}2/**3*createAndShowGUI()实例化一个JFrame,通过它的ContentPane加载布局逻辑内容。4*/5privatestaticvoidcreateAndShowGUI(){6//Createandsetupthewindo7JFrameframe=newJFrame("FlowLayoutDemo");8frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);9//Setupthecontentpane.10addComponentsToPane(frame.getContentPane());11//Displaythewindo12frame.pack();13frame.setVisible(true);14}15//main()程序入口,单独起一个线程,实例化UI。16publicstaticvoidmain(String[]args){17javax.swing.SwingUtilities.invokeLater(newRunnable(){18publicvoidrun(){19createAndShowGUI();20}21});22}FlowLayoutFlowLayout类是最简单的布局管理器。它按照和页面上排列单词的类似方式来安排组件----从左到右,直至没有多余的空间,然后转到下一行。效果:---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---内容面板代码:Java代码23publicstaticvoidaddComponentsToPane(Containerpane){24pane.setLayout(newFlowLayout());25pane.add(newJButton("Button1"));26pane.add(newJButton("Button2"));27pane.add(newJButton("Button3"));28pane.add(newJButton("Long-NamedButton4"));29pane.add(newJButton("5"));30}BorderLayout一个BorderLayout对象将界面分成五大区域,分别用BorderLayout类的静态常量指定:-PAGE_START-PAGE_END-LINE_START-LINE_END-CENTER效果:内容面板代码:Java代码31publicstaticvoidaddComponentsToPane(Containerpane){32JButtonbutton=newJButton("Button1(PAGE_START)");33pane.add(button,BorderLayout.PAGE_START);34button=newJButton("Button2(CENTER)");35button.setPreferredSize(newDimension(200,100));36pane.add(button,BorderLayout.CENTER);37button=newJButton("Button3(LINE_START)");38pane.add(button,BorderLayout.LINE_START);39button=newJButton("Long-NamedButton4(PAGE_END)");40pane.add(button,BorderLayout.PAGE_END);41button=newJButton("5(LINE_END)");---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---42pane.add(button,BorderLayout.LINE_END);43}BoxLayoutBoxLayout可以将组件由上至下或由左至右依次加入当前面板。效果:内容面板代码:Java代码44publicstaticvoidaddComponentsToPane(Containerpane){45JPanelxPanel=newJPanel();46xPanel.setLayout(newBoxLayout(xPanel,BoxLayout.X_AXIS));47addButtons(xPanel);48JPanelyPanel=newJPanel();49yPanel.setLayout(newBoxLayout(yPanel,BoxLayout.Y_AXIS));50addButtons(yPanel);5152pane.add(yPanel,BorderLayout.PAGE_START);53pane.add(xPanel,BorderLayout.PAGE_END);54}5556privatestaticvoidaddAButton(Stringtext,Containercontainer){57JButtonbutton=newJButton(text);58button.setAlignmentX(Component.CENTER_ALIGNMENT);59container.add(button);60}6162privatestaticvoidaddButtons(Containercontainer){63addAButton("Button1",container);64addAButton("Button2",container);65addAButton("Button3",container);66addAButton("Long-NamedButton4",container);67addAButton("5",container);---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---68}CardLayout卡片布局和其他布局不同,因为它隐藏了一些组件。卡片布局就是一组容器或者组件,它们一...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

笔杆子文秘
机构认证
内容提供者

为您提供优质文档,供您参考!

确认删除?