运用 BoxLayout 和Box结合进行 Swing 控件布局(转)

JavaSwing_1.4: BoxLayout(箱式布局) BoxLayout,箱式布局管理器。它把若干组件按水平或垂直方向依次排列放置。Swing 提供了一个实现了 BoxLayout 的容器组件Box。使用 Box 提供的静态方法,可快速创建水平/垂直箱容器(Box),以及填充组件之间空隙的不可见组件。用水平箱和垂直箱的组合嵌套可实现类似于 GridBagLayout 的效果,但没那么复杂。 阅读详情

原地址:https://www.ibm.com/developerworks/cn/java/j-lo-boxlayout/index.html

运用 BoxLayout 进行 Swing 控件布局

陈 怡平
2012 年 12 月 03 日发布

 

引言

在用户使用 Java Swing 进行用户界面开发过程中,会碰到如何对 Java Swing 的控件进行布局的问题。Swing 的控件放置在容器 (Container) 中,容器就是能够容纳控件或者其它容器的类,容器的具体例子有 Frame、Panel 等等。容器需要定义一个布局管理器来对控件进行布局管理,Swing 当中提供的主要的布局管理器有 FlowLayout、BorderLayout、BoxLayout、GridLayout 和 GridBaglayout, 它们的主要特点如表 1 所示:

表 1. Swing 中的一些主要布局管理器的比较

布局管理器特点
FlowLayout把控件按照顺序一个接一个由左向右的水平放置在容器中,一行放不下,就放到下一行
BorderLayout将整个容器划分成东南西北中五个方位来放置控件,放置控件时需要指定控件放置的方位
BoxLayout可以指定在容器中是否对控件进行水平或者垂直放置,比 FlowLayout 要更为灵活
GridLayout将整个容器划分成一定的行和一定的列,可以指定控件放在某行某列上
GridBagLayout是 Swing 当中最灵活也是最复杂的布局管理器,可对控件在容器中的位置进行比较灵活的调整

本文主要关注在 BoxLayout 布局管理器的使用上。我们首先对 BoxLayout 作一下介绍。

BoxLayout 介绍

如前所述,BoxLayout 可以把控件依次进行水平或者垂直排列布局,这是通过参数 X_AXIS、Y_AXIS 来决定的。X_AXIS 表示水平排列,而 Y_AXIS 表示垂直排列。BoxLayout 的构造函数有两个参数,一个参数定义使用该 BoxLayout 的容器,另一个参数是指定 BoxLayout 是采用水平还是垂直排列。下面是一个创建 BoxLayout 实例的例子:

1

2

3

JPanel panel=new JPanel();

BoxLayout layout=new BoxLayout(panel, BoxLayout.X_AXIS);

panel.setLayout(layoout);

在这个例子中,一个 BoxLayout 布局管理器的实例 layout 被创建,这个实例被设置为 panel 的布局管理器,该布局管理器采用了水平排列来排列控件。

当 BoxLayout 进行布局时,它将所有控件依次按照控件的优先尺寸按照顺序的进行水平或者垂直放置,假如布局的整个水平或者垂直空间的尺寸不能放下所有控件,那么 BoxLayout 会试图调整各个控件的大小来填充整个布局的水平或者垂直空间。

BoxLayout 往往和 Box 这个容器结合在一起使用,这么做的理由是,BoxLayout 是把控件以水平或者垂直的方向一个接一个的放置,如果要调整这些控件之间的空间,就会需要使用 Box 容器提供的透明的组件作为填充来填充控件之间的空间,从而达到调整控件之间的间隔空间的目的。Box 容器提供了 4 种透明的组件,分别是 rigid area、strut、glue、filler。Box 容器分别提供了不同的方法来创建这些组件。这四个组件的特点如下:

  • Rigid area 是一种用户可以定义水平和垂直尺寸的透明组件;
  • strut 与 rigid area 类似,但是用户只能定义一个方向的尺寸,即水平方向或者垂直方向,不能同时定义水平和垂直尺寸;
  • 当用户将 glue 放在两个控件之间时,它会尽可能的占据两个控件之间的多余空间,从而将两个控件挤到两边;
  • Filler 是 Box 的内部类,它与 rigid area 相似,都可以指定水平或者垂直的尺寸,但是它可以设置最小,最大和优先尺寸。

用 BoxLayout 进行布局

在了解了 BoxLayout 和 Box 容器的基本特点后,我们来看一下 BoxLayout 的优点,首先 BoxLayout 可以进行对控件进行垂直或者水平布局,同时 BoxLayout 使用起来较为简单,然而把它和 Box 容器相结合,就可以进行较为复杂的布局,达到同使用 GridBagLayout 的一样的效果,但是使用起来要简单方便多了。我们用按钮的布局作为例子来看怎样运用 BoxLayout 和 Box 容器进行布局:

图 1. 应用 BoxLayout 进行按钮布局例子 1

图 1. 应用 BoxLayout 进行按钮布局例子 1

我们在布局中经常会碰到如图 1 所示要把按钮放在容器的两端,那么我们就可以给容器定义一个 BoxLayout 来布局按钮,我们在按钮 1 和按钮 2 之间放置一个不可见的 glue,如前面所提到的那样,glue 就会尽量挤占掉两个按钮之间的空间,从而将两个按钮放在两端。

图 2. 应用 BoxLayout 进行按钮布局例子 2

图 2. 应用 BoxLayout 进行按钮布局例子 2

再来看图 2 的例子,我们经常会遇到要将两个按钮放在容器的右边,我们就可以给容器定义一个 BoxLayout, 先放一个不可见的 glue,这个 glue 会挤占左边的空间,从而将两个按钮推到右边,

在两个按钮之间再放一个 strut,它也是不可见的,它会把两个按钮分隔开。

BoxLayout 布局实例

在基于前面讨论的基础上,我们现在来看一个具体的运用例子,假设图 3 是我们需要完成的用户界面:

图 3. BoxLayout 演示

图 3. BoxLayout 演示

这个演示是一个虚拟的用户对话框,只用于演示如何使用 BoxLayout, 例子代码中没有实现控件的动作。我们假定通过它用户可以选择要查询的运动会项目,然后查询,对话框中的表格显示了查询到的运动会项目的报名情况。为了完成这个布局,我们从上到下分别定义了 3 个 Panel, 分别叫做 topPanel,middlePanel,bottomPanel,这 3 个 Panel 都使用 BoxLayout。我们先看最上边的 topPanel,也就是包含表格的 Panel,topPanel 布局的基本思路是该 Panel 采用 BoxLayout 的垂直排列布局,先放置一个不可见的 Strut, 使topPanel 相 对顶部留出一定的空间,再放置包含表格的滚动窗格,再加入一个不可见的Strut,从而使topPanel和middlePanel之间留出一定的空间。TopPanel 的代码如清单 1 所示:

清单 1. topPanel 示例代码清单

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

static void createTopPanel() {

topPanel = new JPanel();

String[] columnName = { "姓名", "性别", "单位", "参加项目", "备注" };

String[][] rowData = { { "张三", "男", "计算机系", "100 米 ,200 米", "" },

{ "李四", "男", "化学系", "100 米,铅球", "" },

};

           // 创建表格

JTable table = new JTable(new DefaultTableModel(rowData, columnName));

           // 创建包含表格的滚动窗格

JScrollPane scrollPane = new JScrollPane(table);

scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

           // 定义 topPanel 的布局为 BoxLayout,BoxLayout 为垂直排列

topPanel.setLayout(new BoxLayout(topPanel, BoxLayout.Y_AXIS));

           // 先加入一个不可见的 Strut,从而使 topPanel 对顶部留出一定的空间

topPanel.add(Box.createVerticalStrut(10));

           // 加入包含表格的滚动窗格

topPanel.add(scrollPane);

           // 再加入一个不可见的 Strut,从而使 topPanel 和 middlePanel 之间留出一定的空间

 topPanel.add(Box.createVerticalStrut(10));

}

位于中间的 middlePanel 比较复杂些,它的左边包括标签运动会项目和运动会项目列表,中间是两个按钮,我们假定点击 >> 按钮将会把用户在运动会项目列表中选中的项目移到右边的查询项目列表,点击 << 按钮则将右边查询项目列表中选中的项目移回到左边的运动会项目列表。它的布局的基本思路是定义了三个子 Panel,这三个子 Panel 分别对应最左边的标签和运动会项目列表,中间的两个按钮,和最右边的标签和查询项目列表,最左边的 Panel 采用 BoxLayout 的水平排列布局,中间的 Panel 采用 BoxLayout 的垂直排列布局,两个按钮之间加入一个不可见的 rigidArea,调整两个按钮之间的垂直距离,最右边的 Panel 采用 BoxLayout 的水平排列布局放置标签和查询项目列表。然后采用水平排列布局的 middlePanel 将三个 Panel 依次水平的加入。 MiddlePanel 的代码如清单 2 所示。

清单 2. middlePanel 示例代码清单

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

static void createMiddlePanel() {

 // 创建 middlePanel

 middlePanel = new JPanel();

 // 采用水平布局

 middlePanel .setLayout(new BoxLayout(middlePanel,BoxLayout.X_AXIS ));

 // 创建标签运动会项目      

         JLabel sourceLabel = new JLabel("运动会项目:");

 sourceLabel.setAlignmentY(Component.TOP_ALIGNMENT );

 sourceLabel.setBorder(BorderFactory.createEmptyBorder (4, 5, 0, 5));

 // 创建列表运动会项目

 DefaultListModel listModel = new DefaultListModel();

 listModel.addElement("100 米");

 listModel.addElement("200 米");

 listModel.addElement("400 米");

 listModel.addElement("跳远");

 listModel.addElement("跳高");

 listModel.addElement("铅球");

 JList sourceList = new JList(listModel);

 sourceList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION );

 sourceList.setVisibleRowCount(5);

 JScrollPane sourceListScroller = new JScrollPane(sourceList);

 sourceListScroller.setPreferredSize(new Dimension(120, 80));

 sourceListScroller

 .setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS );

 sourceListScroller.setAlignmentY(Component.TOP_ALIGNMENT );

 // 创建最左边的 Panel

 JPanel sourceListPanel = new JPanel();

 // 最左边的 Panel 采用水平布局

 sourceListPanel.setLayout(new BoxLayout(sourceListPanel,

 BoxLayout.X_AXIS ));

 // 加入标签到最左边的 Panel

 sourceListPanel.add(sourceLabel);

 // 加入列表运动会项目到最左边的 Panel

 sourceListPanel.add(sourceListScroller);

 sourceListPanel.setAlignmentY(Component.TOP_ALIGNMENT );

 sourceListPanel.setBorder(BorderFactory.createEmptyBorder (0, 0, 0, 30));

 // 将最左边的 Panel 加入到 middlePanel

 middlePanel .add(sourceListPanel);

 // 定义中间的两个按钮      

 JButton toTargetButton = new JButton(">>");

 JButton toSourceButton = new JButton("<<");

 // 定义中间的 Panel

 JPanel buttonPanel = new JPanel();

 // 中间的 Panel 采用水平布局

 buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.Y_AXIS ));

 // 将按钮 >> 加入到中间的 Panel

 buttonPanel.add(toTargetButton);

 

//两个按钮之间加入一个不可见的 rigidArea         

 buttonPanel.add(Box.createRigidArea (new Dimension(15, 15)));

 // 将按钮 << 加入到中间的 Panel

 buttonPanel.add(toSourceButton);

 buttonPanel.setAlignmentY(Component.TOP_ALIGNMENT );

 buttonPanel.setBorder(BorderFactory.createEmptyBorder (15, 5, 15, 5));

 // 将中间的 Panel 加入到 middlePanel

 middlePanel .add(buttonPanel);

 // 创建标签查询项目

 JLabel targetLabel = new JLabel("查询项目:");

 targetLabel.setAlignmentY(Component.TOP_ALIGNMENT );

 targetLabel.setBorder(BorderFactory.createEmptyBorder (4, 5, 0, 5));

 

// 创建列表查询项目        

 DefaultListModel targetListModel = new DefaultListModel();

 targetListModel.addElement("100 米");

 JList targetList = new JList(targetListModel);

 targetList

 .setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION );

 targetList.setVisibleRowCount(5);

 JScrollPane targetListScroller = new JScrollPane(targetList);

 targetListScroller.setPreferredSize(new Dimension(120, 80));

 targetListScroller

 .setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS );

 targetListScroller.setAlignmentY(Component.TOP_ALIGNMENT );

 // 创建最右边的 Panel

 JPanel targetListPanel = new JPanel();

 // 设置最右边的 Panel 为水平布局

 targetListPanel.setLayout(new BoxLayout(targetListPanel,

 BoxLayout.X_AXIS ));

 // 将标签查询项目加到最右边的 Panel

 targetListPanel.add(targetLabel);

 // 将列表查询项目加到最右边的 Panel

 targetListPanel.add(targetListScroller);

 targetListPanel.setAlignmentY(Component.TOP_ALIGNMENT );

 targetListPanel.setBorder(BorderFactory.createEmptyBorder (0, 30, 0, 0));

 // 最后将最右边的 Panel 加入到 middlePanel

 middlePanel .add(targetListPanel);

     }

我们最后来看一下 bottomPanel 如何布局,bottomPanel 包括分布在两边的两个按钮,其实 bottomPanel 的布局和章节用 BoxLayout 进行布局中的图 1 是一致的,我们在两个按钮之间加入一个 glue, 这个 glue 会挤占两个按钮之间的空间,从而将两个按钮布局到两边,在 bottemPanel 中用一个 buttonPanel 来放置这两个按钮。BottomPanel 采用 BoxLayout, 首先放入一个 strut, 从而使 bottomPanel 和 middlePanel 之间留出距离,再放入 buttonPanel,再放入一个 strut, 从而使 bottomPanel 和底部之间留出距离,BottomPanel 的代码如清单 3 所示。

清单 3. bottomPanel 示例代码清单

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

static void createBottomPanel() {

            // 创建查询按钮

    JButton actionButton = new JButton("查询");

         // 创建退出按钮

    JButton closeButton = new JButton("退出");

         // 创建 bottomPanel

    bottomPanel = new JPanel();

            // 设置 bottomPanel 为垂直布局

    bottomPanel .setLayout(new BoxLayout(bottomPanel,BoxLayout.Y_AXIS ));

            // 创建包含两个按钮的 buttonPanel

    JPanel buttonPanel = new JPanel();

         // 设置 bottomPanel 为水平布局

    buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS ));

            // 将查询按钮加入到 buttonPanel

    buttonPanel.add(actionButton);

 

//加入一个 glue, glue 会挤占两个按钮之间的空间         

 buttonPanel.add(Box.createHorizontalGlue ());

            // 将退出按钮加入到 buttonPanel

 buttonPanel.add(closeButton);

            // 加入一个 Strut,从而使 bottomPanel 和 middlePanel 上下之间留出距离

 bottomPanel .add(Box.createVerticalStrut (10));

            // 加入 buttonPanel

 bottomPanel .add(buttonPanel);

            // 加入一个 Strut,从而使 bottomPanel 和底部之间留出距离

 bottomPanel .add(Box.createVerticalStrut (10));

     }

我们用一个 Panel 来从上到下放置 topPanel、middlePanel 和 bottomPanel,这个 Panel 采用了 GridBagLayout, 最后我们将这个 Panel 加到一个窗体中去,请参考清单 4。

清单 4. 创建窗体示例代码清单

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

public static void main(String[] args) {

           // 创建 topPanel

createTopPanel ();

        // 创建 middlePanel

createMiddlePanel ();

        // 创建 bottomPanel

createBottomPanel ();

        // 创建包含 topPanel,middlePanel 和 bottomPanel 的 panelContainer

JPanel panelContainer = new Jpanel();

        //panelContainer 的布局为 GridBagLayout

panelContainer.setLayout(new GridBagLayout());

 

GridBagConstraints c1 = new GridBagConstraints();

c1.gridx = 0;

c1.gridy = 0;

c1.weightx = 1.0;

c1.weighty = 1.0;

c1.fill = GridBagConstraints.BOTH ;

        // 加入 topPanel

panelContainer.add(topPanel,c1);

 

GridBagConstraints c2 = new GridBagConstraints();

c2.gridx = 0;

c2.gridy = 1;

c2.weightx = 1.0;

c2.weighty = 0;

c2.fill = GridBagConstraints.HORIZONTAL ;

        // 加入 middlePanel

panelContainer.add(middlePanel,c2);

 

GridBagConstraints c3 = new GridBagConstraints();

c3.gridx = 0;

c3.gridy = 2;

c3.weightx = 1.0;

c3.weighty = 0;

c3.fill = GridBagConstraints.HORIZONTAL ;

        // 加入 bottomPanel

panelContainer.add(bottomPanel,c3);

        

        // 创建窗体

JFrame frame = new JFrame("Boxlayout 演示");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );

panelContainer.setOpaque(true);

frame.setSize(new Dimension(480, 320));

frame.setContentPane(panelContainer);

frame.setVisible(true);

}

本文的例子是在文件 BoxLayoutDemo.zip 中,您将其展开,导入到 Eclipse 中去,就可运行例子。

结束语

您通过本文的介绍,可以对 BoxLayout 这个布局管理器如何进行布局能够有一定的了解,也可以在自己的实践过程中进一步总结出自己的方法。

手把手教你用WKT文件在Petrel中创建自定义坐标系统(附CGCS2000转换模板) 本文详细介绍了如何在Petrel软件中利用WKT文件创建自定义坐标系统,并重点提供了CGCS2000坐标系的完整转换模板与实战步骤。通过解析坐标系统的三大支柱(大地坐标系、投影坐标系、基准转换)和WKT文件结构,指导用户从零开始构建适用于本土化项目的坐标系统,确保地质建模与空间数据处理的精度与一致性。 阅读详情

相关推荐

架构设计之架构治理

架构治理的本质是“用规则约束复杂性,用流程保障落地,用数据驱动优化”先定目标:明确量化的治理目标,避免盲目行动;立标准:建立覆盖分层、选型、接口、拆分的统一规范,奠定治理基础;强评审:通过架构评审把控设计环节,提前规避风险;全流程:将治理规则贯穿设计、开发、测试、部署、运维全生命周期;重保障:通过组织、流程、工具确保治理落地,而非“纸上谈兵”;持续迭代:随业务与技术演进优化治理规则,避免“一劳永逸”。

xiaolyuh的专栏 811

Swing框式布局(BoxLayout,Box)应用详解

转自 http://www.boxcode.cn/html/JAVA/J2SE/2009/0813/636.html框式布局利用无序网格布局,几乎可以产生任意复杂的布局模型。除了这一个AWT布局管理器之外,Swing还引入了另外一个叫做框式布局(Box Layout)的结构。框式布局能够生成复杂的布局结构,但却没有像使用无序网格布局那样麻烦。编程者不必处理任何权值,也不用采用反复试验的方法

java_jun的专栏 7497

JavaScript 书签脚本实战:腾讯/优酷/爱奇艺等5大视频站m3u8链接一键提取

本文详细介绍了如何使用JavaScript书签脚本一键提取腾讯视频、优酷、爱奇艺等五大视频平台的m3u8流媒体链接。通过分析播放器内部对象结构,开发者可以高效获取视频源文件,避免录屏画质损失。文章包含各平台适配方案、实战增强功能开发及企业级解决方案设计,帮助用户快速掌握这一实用技术。

weixin_27945229的博客 610

java布局中的BoxLayout布局,使用BoxLayout进行Swing布局

在用户使用 Java Swing 进行用户界面开发过程中,会碰到如何对 Java Swing 的控件进行布局的问题。Swing 的控件放置在容器 (Container) 中,容器就是能够容纳控件或者其它容器的类,容器的具体例子有 Frame、Panel 等等。容器需要定义一个布局管理器来对控件进行布局管理,Swing 当中提供的主要的布局管理器有 FlowLayout、BorderLayout、B...

weixin_33709219的博客 1092

别再手动算考勤了!教你用Python+企业微信API自动生成月度报表

本文介绍如何利用Python和企业微信API构建自动化考勤分析系统,实现从数据获取到可视化报表生成的全流程自动化。通过企业微信打卡接口获取数据,使用Pandas进行高效清洗和分析,并生成Excel和HTML格式的报表,大幅提升考勤统计效率。系统支持智能判定考勤状态,如迟到、早退等,并可通过定时任务实现月度自动化运行。

weixin_27875131的博客 290

matlab安装libsvm常见问题

matlab安装libsvm常见问题 libsvm的官网链接:LIBSVM -- A Library for Support Vector Machines.

cqujcy的博客 1535

【Swing】BoxLayout盒式布局管理器

BoxLayout(盒布局管理器)通常和 Box 容器联合使用,Box 类有以下两个静态方法。 createHorizontalBox():返回一个 Box 对象,它采用水平 BoxLayout,即 BoxLayout 沿着水平方向放置组件,让组件在容器内从左到右排列。 createVerticalBox():返回一个 Box 对象,它采用垂直 BoxLayout,即 BoxLayout 沿着...

XiaoChen~Coder 2140

Altium Designer学习---如何进行SI仿真

Altium designer 如何进行SI仿真。         1、仿真电路中需要至少一块集成电路;             2、器件的IBIS模型;              3、在规则中必须设定电源网络和地网络;              4、建立SI规则约束;              5、层堆栈必须设置正确,电源平面必须连续;     建立的文件必须是一个工程,并把相应的文件放在工程目...

weixin_34050519的博客 4902

Java的BoxLayout

BoxLayout是 Java Swing 中用于排列组件的布局管理器。它可以沿着一个轴(X轴或Y轴)顺序地排列组件。使用BoxLayout, 组件可以在水平轴(从左到右)或垂直轴(从上到下)上排列。要使用BoxLayout以下是BoxLayoutBoxLayoutBoxLayoutBoxBoxLayoutJComponent。

weixin_63490470的博客 1379

Verilog除法器(32位无符号+带符号)

32位无符号除法器设计 恢复余数法: 恢复余数除法的基本思路是从“部分余数”中减去除数,如果结果为负(不够减),则恢复原来的部分余数,商0. 寄存器使用: reg_r 存放被除数a reg_b 存放除数b reg_r 存放余数(初始清零) 具体做法: 做减法时,减数是reg_b中的除数,被减数是reg_r中的余数左移一位,最低位由reg_q(被除数)的最高位补充。为了能够判断相减结果的正...

qq_38600065的博客 1万+

C#上位机通信层封装:西门子S7NetPlus库的优雅使用

支持S7-1200/1500(机架号0,槽号1)、S7-300/400(机架号/槽号需根据实际配置);支持位(Bit)、字节(Byte)、字(Word)、双字(DWord)、浮点数(Float/Double)等数据类型的读写;支持DB块、输入寄存器(I)、输出寄存器(Q)、内存寄存器(M)、定时器(T)、计数器(C)的操作;轻量无依赖,兼容.NET 5+。首先定义核心枚举和常量,统一规范参数类型,避免硬编码。/// 西门子PLC型号(对应不同的机架/槽号默认配置)

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1085

运用 BoxLayout 进行 Swing 控件布局

引言 在用户使用 Java Swing 进行用户界面开发过程中,会碰到如何对 Java Swing 的控件进行布局的问题。Swing 的控件放置在容器 (Container) 中,容器就是能够容纳控件或者其它容器的类,容器的具体例子有 Frame、Panel 等等。容器需要定义一个布局管理器来对控件进行布局管理,Swing 当中提供的主要的布局管理器有 FlowLayout、BorderLay...

lvjun106 290

自适应控制 (Adaptive Control) 算法详解及案例分析

自适应控制是一种能够在线调整控制器参数以适应系统动态变化的控制方法。其核心思想是通过实时估计系统参数或调整控制器参数,使系统在不确定性或动态变化的环境中仍能保持稳定性和性能。

闲人编程的博客 4085

java boxlayout_运用 BoxLayout 进行 Swing 控件布局

对于初学 Java Swing 的开发人员来说,控件的布局是比较困难的。相对于 FlowLayout 而言,BoxLayout 比较灵活,有更大的功能,可以完成比较复杂界面的布局,本文将在基于例子的基础上给出如何较好的使用 BoxLayout, 可以给 Java Swing 的初学者一些启发。引言在用户使用 Java Swing 进行用户界面开发过程中,会碰到如何对 Java Swing 的控件进...

weixin_35241897的博客 418

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

java布局_运用 BoxLayout 进行 Swing 控件布局

引言在用户使用 Java Swing 进行用户界面开发过程中,会碰到如何对 Java Swing 的控件进行布局的问题。Swing 的控件放置在容器 (Container) 中,容器就是能够容纳控件或者其它容器的类,容器的具体例子有 Frame、Panel 等等。容器需要定义一个布局管理器来对控件进行布局管理,Swing 当中提供的主要的布局管理器有 FlowLayout、BorderLayout...

weixin_39636610的博客 466

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

java boxlayout_java布局中的BoxLayout布局,使用BoxLayout进行Swing布局

在用户使用 Java Swing 进行用户界面开发过程中,会碰到如何对 Java Swing 的控件进行布局的问题。Swing 的控件放置在容器 (Container) 中,容器就是能够容纳控件或者其它容器的类,容器的具体例子有 Frame、Panel 等等。容器需要定义一个布局管理器来对控件进行布局管理,Swing 当中提供的主要的布局管理器有 FlowLayout、BorderLayout、B...

weixin_33844346的博客 488

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

box布局 java_Java Swing组件BoxLayout布局用法示例

本文实例讲述了Java Swing组件BoxLayout布局用法。分享给大家供大家参考,具体如下:BoxLayout 可以把控件依次进行水平或者垂直排列布局,这是通过参数 X_AXIS、Y_AXIS 来决定的。X_AXIS 表示水平排列,而 Y_AXIS 表示垂直排列。BoxLayout 的构造函数有两个参数,一个参数定义使用该 BoxLayout 的容器,另一个参数是指定 BoxLayout 是...

weixin_39851914的博客 576

java中利用box布局_Java Swing组件BoxLayout布局用法示例

本文实例讲述了Java Swing组件BoxLayout布局用法。分享给大家供大家参考,具体如下:BoxLayout 可以把控件依次进行水平或者垂直排列布局,这是通过参数 X_AXIS、Y_AXIS 来决定的。X_AXIS 表示水平排列,而 Y_AXIS 表示垂直排列。BoxLayout 的构造函数有两个参数,一个参数定义使用该 BoxLayout 的容器,另一个参数是指定 BoxLayout 是...

weixin_42506706的博客 933

java垂直排布控件_本文实例讲述了Java Swing组件BoxLayout布局用法。分享给大家供大家参考,具体如下:BoxLayout 可以把控件依次进行水平或者垂直排列布局,...

本文实例讲述了Java Swing组件BoxLayout布局用法。分享给大家供大家参考,具体如下:BoxLayout 可以把控件依次进行水平或者垂直排列布局,这是通过参数 X_AXIS、Y_AXIS 来决定的。X_AXIS 表示水平排列,而 Y_AXIS 表示垂直排列。BoxLayout 的构造函数有两个参数,一个参数定义使用该 BoxLayout 的容器,另一个参数是指定 BoxLayout 是...

weixin_42429893的博客 1650

java布局 BoxLayout布局

BoxLayout BoxLayout 可以把控件依次进行水平或者垂直排列布局,这是通过参数 X_AXIS、Y_AXIS 来决定的。X_AXIS 表示水平排列,而 Y_AXIS 表示垂直排列。BoxLayout 的构造函数有两个参数,一个参数定义使用该 BoxLayout 的容器,另一个参数是指定 BoxLayout 是采用水平还是垂直排列。下面是一个创建 BoxLayout 实例的例子:  

*番茄脸红红* 1591

java boxlayout_Java Swing组件BoxLayout布局用法示例

编程之家收集整理的这篇文章主要介绍了Java Swing组件BoxLayout布局用法示例,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随编程之家小编过来看看吧!本文实例讲述了Java Swing组件BoxLayout布局用法。分享给大家供大家参考,具体如下:BoxLayout 可以把控件依次进行水平或者垂直排列布局,这是通过参数 X_AXIS、Y_AXIS 来决定的。X_A...

weixin_35172689的博客 683

BoxLayout进行Swing布局

引言    在用户使用 Java Swing 进行用户界面开发过程中,会碰到如何对 Java Swing 的控件进行布局的问题。Swing 的控件放置在容器 (Container) 中,容器就是能够容纳控件或者其它容器的类,容器的具体例子有 Frame、Panel 等等。容器需要定义一个布局管理器来对控件进行布局管理,Swing 当中提供的主要的布局管理器有 FlowLayout、BorderL

ytlcainiao的专栏 722

BoxLayout组件间隙处理

运用 BoxLayout 进行 Swing 控件布局陈 怡平2012 年 12 月 03 日发布WeiboGoogle+用电子邮件发送本页面 2引言在用户使用 Java Swing 进行用户界面开发过程中,会碰到如何对 Java Swing 的控件进行布局的问题。Swing 的控件放置在容器 (Container) 中,容器就是能够容纳控件或者其它容器的类,容器的具体例子有 Frame、Panel...

朝闻道_的博客 4726
上一篇: JTextField 默认文字提示功能(转)
下一篇: 【LLM基础】1.Pytorch学习
RuiBo_Qiu
博客等级 码龄11年 158粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值