Java布局方式

转载请注明原文出处,http://www.cnblogs.com/flyingcloude/p/6992371.html

Java为我们提供了几个常用的布局管理器类,例如:FlowLayout、BorderLayout、GridLayout、GridBagLayout等。

java.awt FlowLayout 将组件按从左到右而后从上到下的顺序依次排列,一行不能放完则折到下一行继续放置 
java.awt GridLayout 形似一个无框线的表格,每个单元格中放一个组件 
java.awt BorderLayout 将组件按东、南、西、北、中五个区域放置,每个方向最多只能放置一个组件 
java.awt GridBagLayout 非常灵活,可指定组件放置的具体位置及占用单元格数目

[java] view plain copy

  1. import java.awt.BorderLayout;
  2. import java.awt.Color;
  3. import java.awt.Container;
  4. import java.awt.FlowLayout;
  5. import java.awt.GridLayout;
  6. import javax.swing.JButton;
  7. import javax.swing.JFrame;
  8. import javax.swing.JPanel;
  9. import javax.swing.JTextField;
  10. public class CalcUI extends JFrame
  11. {
  12. JPanel p1 = new JPanel(new FlowLayout()); //默认组件从居中开始
  13. JButton backButton = new JButton("back");
  14. JButton clearButton = new JButton("clear");
  15. JPanel p2 = new JPanel(new GridLayout(2, 1)); //放置2行,每行1个组件
  16. JTextField displayField = new JTextField();
  17. JPanel p3 = new JPanel(new GridLayout(4, 5)); //放置4行,每行5个组件
  18. String buttonStr = "789/A456*B123-C0.D+=";
  19. private void addButton(Container c, String s)
  20. {
  21. JButton b = new JButton(s);
  22. if(s.equals("A"))
  23. {
  24. b.setText("sqrt");
  25. }
  26. else if(s.equals("B"))
  27. {
  28. b.setText("1/x");
  29. }
  30. else if(s.equals("C"))
  31. {
  32. b.setText("%");
  33. }
  34. else if(s.equals("D"))
  35. {
  36. b.setText("+/-");
  37. }
  38. b.setForeground(Color.BLUE);
  39. c.add(b);
  40. //      b.addActionListener(this);
  41. }
  42. public CalcUI()
  43. {
  44. p1.add(backButton);
  45. p1.add(clearButton);
  46. p2.add(displayField);
  47. p2.add(p1);
  48. for(int i = 0; i < buttonStr.length(); i++)
  49. this.addButton(p3, buttonStr.substring(i, i + 1));
  50. setLayout(new BorderLayout());
  51. add(p2, "North");
  52. add(p3, "Center");
  53. setSize(600, 600);
  54. setVisible(true);
  55. }
  56. public static void main(String[] args)
  57. {
  58. new CalcUI();
  59. }
  60. }

[java] view plain copy

  1. import java.awt.Color;
  2. import java.awt.Component;
  3. import java.awt.Font;
  4. import java.awt.GridBagConstraints;
  5. import java.awt.GridBagLayout;
  6. import javax.swing.JFrame;
  7. import javax.swing.JLabel;
  8. import javax.swing.JScrollPane;
  9. import javax.swing.JTextArea;
  10. import javax.swing.JTextField;
  11. public class GridBagConstraintsTest extends JFrame
  12. {
  13. private JLabel fromLabel = new JLabel("发送者");
  14. private JTextField fromField = new JTextField(10);
  15. private JLabel receiveLabel = new JLabel("接收者");
  16. private JTextField receiveField = new JTextField(10);
  17. private JLabel ccLabel = new JLabel("抄送人");
  18. private JTextField ccField = new JTextField(10);
  19. private JLabel subjectLabel = new JLabel("主题");
  20. private JTextField subjectField = new JTextField(10);
  21. private JTextArea accessoryArea = new JTextArea();
  22. private JScrollPane accessoryScroll = new JScrollPane();
  23. private JTextArea mailArea = new JTextArea();
  24. private JScrollPane scroll = new JScrollPane();
  25. private JLabel accessoryLabel = new JLabel("附件");
  26. private GridBagConstraints c = new GridBagConstraints();
  27. private GridBagLayout gridbag = new GridBagLayout();
  28. private void add(Component c, GridBagConstraints gbc, GridBagLayout gridbag, int x, int y, int w, int h)
  29. {
  30. gbc.gridx = x;
  31. gbc.gridy = y;
  32. gbc.gridheight = h;
  33. gbc.gridwidth = w;
  34. gridbag.setConstraints(c, gbc);
  35. add(c);
  36. }
  37. public GridBagConstraintsTest()
  38. {
  39. setSize(600, 600);
  40. setVisible(true);
  41. setLayout(gridbag);
  42. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  43. c.fill = GridBagConstraints.HORIZONTAL;
  44. c.weightx = 0;
  45. c.weighty = 0;
  46. fromLabel.setForeground(Color.BLUE);
  47. fromLabel.setFont(new Font("Alias", Font.BOLD, 16));
  48. add(fromLabel, c, gridbag, 0, 1, 1, 1);
  49. receiveLabel.setForeground(Color.blue);
  50. receiveLabel.setFont(new Font("Alias", Font.BOLD, 16));
  51. add(receiveLabel, c, gridbag, 0, 2, 1, 1); //指定收信人标签位置及大小
  52. ccLabel.setForeground(Color.blue);
  53. ccLabel.setFont(new Font("Alias", Font.BOLD, 16));
  54. add(ccLabel, c, gridbag, 0, 3, 1, 1); //指定抄送人标签位置及大小
  55. subjectLabel.setForeground(Color.blue);
  56. subjectLabel.setFont(new Font("Alias", Font.BOLD, 16));
  57. add(subjectLabel, c, gridbag, 0, 4, 1, 1); //指定主题标签位置及大小
  58. accessoryLabel.setForeground(Color.blue);
  59. accessoryLabel.setFont(new Font("Alias", Font.BOLD, 16));
  60. add(accessoryLabel, c, gridbag, 0, 5, 1, 1); //指定附件标签位置及大小
  61. c.weightx = 100; //行自适应缩放
  62. c.weighty = 0;//列高不变
  63. fromField.setText("[email protected]");
  64. add(fromField, c, gridbag, 1, 1, 1, 1); //指定发信人文本域(JTextField)位置及大小
  65. add(receiveField, c, gridbag, 1, 2, 1, 1); //指定收信人文本域(JTextField)位置及大小
  66. add(ccField, c, gridbag, 1, 3, 1, 1); //指定抄送人文本域(JTextField)位置及大小
  67. add(subjectField, c, gridbag, 1, 4, 1, 1); //指定主题文本域(JTextField)位置及大小
  68. //      accessoryArea.setEditable(false);
  69. //设置不显示水平滚动条(该JTextArea置于JScrollPane中)
  70. //      accessoryScroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
  71. add(accessoryScroll, c, gridbag, 1, 5, 1, 1); //指定附件文本区(JTextArea)位置及大小
  72. c.fill = GridBagConstraints.BOTH;//采用全填充方式布局
  73. c.weightx = 100;//行自适应缩放
  74. c.weighty = 100;//列自适应缩放
  75. mailArea.setBackground(Color.blue);
  76. mailArea.setForeground(Color.yellow);
  77. mailArea.setTabSize(4);
  78. //指定信件主体区(JTextArea)的位置及大小。(该JTextArea也置于JScrollPane中)
  79. add(scroll, c, gridbag, 0, 6, 2, 1);
  80. }
  81. public static void main(String[] args)
  82. {
  83. new GridBagConstraintsTest();
  84. }
  85. }

转载请注明原文出处,http://www.cnblogs.com/flyingcloude/p/6992371.html

时间: 2024-10-27 17:25:22

Java布局方式的相关文章

java布局学习 (二)

前文中介绍了FlowLayout和BorderLayout 本文我们将会继续介绍java中的布局方式 (3)GridLayout 网格布局 这种布局会将整个容器划分成M行*N列的网格. 如下图:                                                                                                                                                        

Swing的布局方式

  Swing的布局方式 当选择使用JPanel和顶层容器的content pane时,需要考虑布局管理.JPanel缺省是初始化一个FlowLayout,而content pane缺省是初始化一个BorderLayout.下面将分别介绍几种最常用的布局管理器:FlowLayout.BorderLayout.BoxLayout.CardLayout.GridLayout和GridBagLayout. 代码演示每一个布局管理器都会有一个代码演示,xxxLayoutDemo.java(见附件).这些

Android五种布局方式——LinearLayout、RelativeLayout、TableLayout....(四)

Android五种布局方式--LinearLayout.RelativeLayout .TableLayout.... Android使用XML声明界面布局 将程序的表现层和控制层分离 修改用户界面时,无需更改程序的源代码 可视化工具设计用户界面 Android五种布局方式 LinearLayout线性布局 AbsoluteLayout坐标布局 RelativeLayout相对布局 FrameLayout帧布局 TableLayout表格布局 GridLayout 1.LinearLayout线

Java布局管理器setLayout()

Java布局管理器setLayout() 1.FlowLayout public FlowLayout(int align,int hgap,int vgap) 创建一个新的流布局管理器,具有指定的对齐方式以及指定的水平和垂直间隙. 对齐参数的值必须是以下之一:FlowLayout.LEFT.FlowLayout.RIGHT.FlowLayout.CENTER.FlowLayout.LEADING 或 FlowLayout.TRAILING. 参数: align - 对齐值 hgap - 组件之

Android 开发之旅:view的几种布局方式及实践

本文的主要内容就是分别介绍以上视图的七种布局显示方式效果及实现,大纲如下: 1.View布局概述 2.线性布局(Linear Layout) 2.1.Tips:android:layout_weight="1" 3.相对布局(Relative Layout) 4.表格布局(Table Layout) 5.列表视图(List View) 5.1.一个小的改进 5.2.补充说明 6.网格视图(Grid View) 7 .绝对布局() 8.标签布局(Tab Layout) 1.view的布局

WebApp与Native App及WebApp的布局方式和技术

开发者们都知道在高端智能手机系统中有两种应用程序:一种是基于本地(操作系统)运行的APP:一种是基于高端机的浏览器运行的WebApp,本文将主要讲解后者. Web App与Native App有何区别呢? Native App: 1.开发成本非常大. 一般使用的开发语言为JAVA.C++.Objective-C. 2.更新体验较差.同时也比较麻烦 每一次发布新的版本,都需要做版本打包,且需要用户手动更新(有些应用程序即使不需要用户手动更新,但是也需要有一个更新的提示). 3.非常酷 因为nati

Android开发之基本控件和详解四种布局方式

Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动.给控件添加事件也有接口回调和委托代理的方式.今天这篇博客就总结一下Android中常用的基本控件以及布局方式.说到布局方式Android和iOS还是区别挺大的,在iOS中有Frame绝对布局和AutoLayout相对布局.而在Android中的布局方式就比较丰富了,今天博客中会介绍四种常用的布局方式.先总结一下控件,然后再搞一搞基本方式,开发环境还是用的Mac下的Android Studio.开始今天的正题, 虽然A

【转】Android 开发之旅:view的几种布局方式及实践

引言 通过前面两篇: Android 开发之旅:又见Hello World! Android 开发之旅:深入分析布局文件&又是“Hello World!” 我们对Android应用程序运行原理及布局文件可谓有了比较深刻的认识和理解,并且用“Hello World!”程序来实践证明了.在继续深入Android开发之旅之前,有必要解决前两篇中没有介绍的遗留问题:View的几种布局显示方法,以后就不会在针对布局方面做过多的介绍.View的布局显示方式有下面几种:线性布局(Linear Layout).

Java布局管理器组件

Java布局管理器组件 所谓布局管理器,就是为容器内的组件提供若干布局策略,每个容器都拥有某种默认布局管理器,用于负责其内部组件的排列.目前开发中,常用的布局管理器有BorderLayout.FlowLayout.GridLayout.GridBagLayout.CardLayout.BoxLayout.SpringLayout.GroupLayout等: 布局管理器种类 BorderLayout FlowLayout GridLayout GridBagLayout CardLayout Bo