GroupLayout,分组布局管理器,将组件按层次分组,每个组可以包含任意数量的元素(Group、Component或Gap)
下面简单介绍下串行组与并行组
- 串行组(sequential group):按顺时针指定方向(水平/垂直)逐个放置元素
- 并行组(paraller group):沿指定方向(水平/垂直)并行排列元素,能够以四种方式对齐其子元素
Group的创建以及元素的添加:
JFrame jf=new JFrame("测试窗口");
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//创建内容面板容器
JPanel panel=new JPanel();
//先创建分组布局,并关联容器
GroupLayout layout=new GroupLayout(panel)
//设置容器的布局
panel.setLayout(layout);
//水平串行(上下)
layout.setHorizontalGroup(layout.createSequentialGroup()
.addContainerGap().addGroup(layout.createParallelGroup(Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(field).addComponent(button))
.addGroup(layout.createSequentialGroup()
.addComponent(field2).addComponent(button2))
.addGroup(layout.createSequentialGroup()
.addComponent(jScrollPane)
.addContainerGap(3, 5)
.addGroup(layout.createParallelGroup(Alignment.LEADING)
.addComponent(checkBox)
.addComponent(jPanel)
.addComponent(jLabel3)
.addComponent(box,100,150,200)
.addComponent(jLabel2)
.addComponent(comboBox)
.addComponent(jl1,200,200,200)
))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel).addContainerGap(0, Short.MAX_VALUE).addComponent(button4).addContainerGap(3, 5).addComponent(button3))
)
.addContainerGap());
layout.setVerticalGroup(layout.createSequentialGroup().addContainerGap()
.addGroup(layout.createParallelGroup(Alignment.LEADING)
.addComponent(field,25,25,25).addComponent(button,25,25,25))
.addContainerGap(3,5)
.addGroup(layout.createParallelGroup(Alignment.LEADING)
.addComponent(field2,25,25,25).addComponent(button2,25,25,25))
.addContainerGap(3,5)
.addGroup(layout.createParallelGroup(Alignment.LEADING)
.addComponent(jScrollPane).addGroup(layout.createSequentialGroup()
.addComponent(checkBox)
.addComponent(jPanel)
.addContainerGap(3,5)
.addComponent(jLabel3)
.addComponent(box,25,25,25)
.addContainerGap(3,5)
.addComponent(jLabel2)
.addContainerGap(3,5)
.addComponent(comboBox,25,25,25)
.addContainerGap(3,Short.MAX_VALUE)
.addComponent(jl1,200,200,200)
))
.addContainerGap(3,5)
.addGroup(layout.createParallelGroup(Alignment.LEADING)
.addComponent(jLabel,25,25,25).addComponent(button4,25,25,25).addComponent(button3,25,25,25))
.addContainerGap()
);
串行和并行根据不同的方向,元素的排列方式也不同 。
构建文本框使用的是JTextField控件
private JTextField field=new JTextField();
private JTextField field2=new JTextField();
构建表格使用的是JTable 控件
private JTable jTable;
构建一个项的列表使用的是JComboBox控件
private JComboBox<String> box=new JComboBox<>();
private JComboBox<String> comboBox=new JComboBox<>(new String[]{"最大值","中位数","平均值","最小值"});
构建可选按钮使用的是JCheckBox控件
JCheckBox checkBox1=new JCheckBox("编码基因")
JCheckBox checkBox2=new JCheckBox("长非编码RNA");
JCheckBox checkBox3=new JCheckBox("假基因");
JCheckBox checkBox=new JCheckBox("不包含表头");
创建内容面板容器
private JPanel jPanel=new JPanel()
构建一部分的方法
public void initCheck(){
jPanel.setBorder(BorderFactory.createTitleBorder(BorderFactory.createLineBorder(Color.BLUE),"默认转换方式"));
GroupLayout layout=new GroupLayout(jPanel);//创建分组布局,并关联容器
jPanel.setLayout(layout)//设置容器的布局
layout.setHorizontalGroup(layout.createParallelGroup(Alignment.LEADING)
.addComponent(checkBox1,190,190,190)
.addComponent(checkBox2)
.addComponent(checkBox3));
layout.setVerticalGroup(layout.createSequentialGroup()
.addComponent(checkBox1)
.addComponent(checkBox2)
.addComponent(checkBox3)
);
public Main(){
init();
}
private Main getInstance(){
return this;}
private List<String> list
private void createTable(Map<String.string> map)