设置BOXlayout的对齐方式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设置BOXlayout的对齐方式相关的知识,希望对你有一定的参考价值。
最主要的是我现在设置的是垂直排列 但是我希望垂直排列的组件是左对齐的
我的怎么是居中对齐啊 如何更改
允许垂直或水平布置多个组件的布局管理器。
用水平组件和垂直组件的不同组合嵌套多面板的作用,
类似于GridBagLayout,但没那么复杂。
构造函数:BoxLayout(Container target, int axis)
target - 需要布置的容器
axis - 布置组件时使用的轴。它可以是以下之一:
BoxLayout.X_AXIS:从左到右水平布置组件
BoxLayout.Y_AXIS: 从上到下垂直布置组件
BoxLayout.LINE_AXIS: 根据容器的 ComponentOrientation 属性,按照文字在一行中的排列方式布置组件.如果容器的 ComponentOrientation 表示水平,则将组件水平放置,否则将它们垂直放置。对于水平方向,如果容器的 ComponentOrientation 表示从左到右,则组件从左到右放置,否则将它们从右到左放置。对于垂直方向,组件总是从上到下放置的。
BoxLayout.PAGE_AXIS: 根据容器的 ComponentOrientation 属性,按照文本行在一页中的排列方式布置组件.如果容器的 ComponentOrientation 表示水平,则将组件垂直放置,否则将它们水平放置。对于水平方向,如果容器的 ComponentOrientation 表示从左到右,则组件从左到右放置,否则将它们从右到左放置。对于垂直方向,组件总是从上向下放置的。
Demo:
import cn.wsl.util.MainFrameTmp;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.BoxLayout;
import java.awt.GridLayout;
public class BoxLayoutDemo extends MainFrameTmp
public BoxLayoutDemo()
setLayout(new GridLayout(4,1));
// 沿X轴放置
JPanel pane1 = new JPanel();
pane1.setLayout(new BoxLayout(pane1, BoxLayout.X_AXIS));
pane1.add(new JButton("btn11"));
pane1.add(new JButton("btn12"));
pane1.add(new JButton("btn13"));
pane1.add(new JButton("btn14"));
add(pane1);
// 沿y轴放置
JPanel pane2 = new JPanel();
pane2.setLayout(new BoxLayout(pane2, BoxLayout.Y_AXIS));
pane2.add(new JButton("btn21"));
pane2.add(new JButton("btn22"));
pane2.add(new JButton("btn23"));
pane2.add(new JButton("btn24"));
add(pane2);
//与容器的ComponentOrientation相同的放置
JPanel pane3 = new JPanel();
pane3.setLayout(new BoxLayout(pane3, BoxLayout.LINE_AXIS));
pane3.add(new JButton("btn31"));
pane3.add(new JButton("btn32"));
pane3.add(new JButton("btn33"));
pane3.add(new JButton("btn34"));
add(pane3);
//与容器的ComponentOrientation相反的放置
JPanel pane4 = new JPanel();
pane4.setLayout(new BoxLayout(pane4, BoxLayout.PAGE_AXIS));
pane4.add(new JButton("btn41"));
pane4.add(new JButton("btn42"));
pane4.add(new JButton("btn43"));
pane4.add(new JButton("btn44"));
add(pane4);
public static void main(String[] args)
run(new BoxLayoutDemo());
沿Y轴 默认就是左对齐
试试setComponentOrientation方法
参考技术A 因为你定义的是一个具有列型盒式布局的盒式容器,所以你添加进去的组件都是左对齐的。。。#pragma pack (n) 设置对齐方式
1 // pragma_pack.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include <windows.h> 6 #include <iostream> 7 8 using namespace std; 9 10 11 12 /* 13 这是给编译器用的参数设置,有关结构体字节对齐方式设置, #pragma pack是指定数据在内存中的对齐方式。 14 15 #pragma pack (n) //C编译器将按照n个字节对齐。 16 #pragma pack () //取消自定义字节对齐方式。 17 18 19 #pragma pack (push,1) //把原来对齐方式设置压栈, 20 //并设新的对齐方式设置为一个字节对齐 21 22 #pragma pack(pop) //恢复对齐状态 23 24 因此可见,加入push和pop可以使对齐恢复到原来状态,而不是编译器默认,可以说后者更优,但是很多时候两者差别不大 25 26 如: 27 28 #pragma pack(push) //保存对齐状态 29 30 #pragma pack(4)//设定为4字节对齐 31 32 相当于 #pragma pack (push,4) 33 */ 34 35 //#pragma pack(1) 36 //调整结构体的边界对齐,让其以一个字节对齐 37 38 #pragma pack(push,1) 39 40 41 typedef struct _A_ 42 { 43 char a; 44 double b; 45 }A; 46 47 //#pragma pack() 48 49 #pragma pack(pop) 50 51 52 53 int main() 54 { 55 cout << sizeof(A) << endl; 56 57 return 0; 58 }
对齐时:
屏蔽代码时:
以上是关于设置BOXlayout的对齐方式的主要内容,如果未能解决你的问题,请参考以下文章