五种JAVA GUI布局管理的方式
1.流式布局(FlowLayout)
定义:
通俗地说,流式布局就是根据窗口大小,自动改变窗口内组件的位置。例如:原窗口大小一行可以容纳10个BUTTON,但将窗口缩小后,每行仅能容纳5个BUTTON,此时原先的10个BUTTON中的五个就会自动排列到下一行。
示例:(省略panel的使用)
Hashset
package布局管理;
importjava.awt.*;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
publicclassLayout{//流式布局
publicstaticvoidmain(String[]args){
Frameframe=newFrame();//创建一个窗口
frame.setLayout(newFlowLayout(FlowLayout.LEFT));//将窗口布局设置为流式布局,并设置向左对齐
Buttonbutton1=newButton("button1");//创建若干个按钮
Buttonbutton2=newButton("button2");
Buttonbutton3=newButton("button3");
Buttonbutton4=newButton("button4");
Buttonbutton5=newButton("button5");
frame.add(button1);//将按钮添加进窗口中
frame.add(button2);
frame.add(button3);
frame.add(button4);
frame.add(button5);
frame.setBounds(200,200,500,500);//设置窗口的位置与大小
frame.setVisible(true);//设置窗口可见性
frame.addWindowListener(newWindowAdapter(){//事件监听:关闭窗口
@Override
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});
}
}
2.东西南北中布局(BorderLayout)
定义:
东西南北中布局,顾名思义。将窗口分为东西南北中四个“块儿”,也可以称作上下左右中布局,便于理解。
示例:(省略panel的使用)
package布局管理;
importjava.awt.*;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
publicclassBorderLayout{//东西南北中布局
publicstaticvoidmain(String[]args){
Frameframe=newFrame();
frame.setLayout(newjava.awt.BorderLayout());
Buttoneast=newButton("East");
east.setBackground(newColor(140,172,51));
Buttonwest=newButton("West");
west.setBackground(newColor(140,172,51));
Buttonnorth=newButton("North");
north.setBackground(newColor(38,222,135));
Buttonsouth=newButton("South");
south.setBackground(newColor(38,222,135));
Buttoncenter=newButton("Center");
frame.add(east,java.awt.BorderLayout.EAST);
frame.add(west,java.awt.BorderLayout.WEST);
frame.add(north,java.awt.BorderLayout.NORTH);
frame.add(south,java.awt.BorderLayout.SOUTH);
frame.add(center,java.awt.BorderLayout.CENTER);
frame.setBounds(200,200,500,500);
frame.setVisible(true);
frame.addWindowListener(newWindowAdapter(){
@Override
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});
}
}
3.表格式布局
定义:
将窗口拆分为若干个表格(拆分为自己需要的表格),再往里添加组件。
示例:
GUI经常使用的“登录”、“注册”界面
package布局管理;
importjavafx.scene.control.PasswordField;
importjavafx.scene.layout.Pane;
importsun.security.util.Password;
importjava.awt.*;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjava.nio.charset.Charset;
publicclassGridLayout{
publicstaticvoidmain(String[]args){
//System.out.println("file.encoding="+System.getProperties().getProperty("file.encoding"));
//System.out.println("默认是:"+Charset.defaultCharset().name());
Frameframe=newFrame("表格布局");
frame.setLayout(newjava.awt.GridLayout(4,1));//设置行列数
Panelpanel1=newPanel();
frame.add(panel1);
Panelpanel2=newPanel();
frame.add(panel2);
Panelpanel3=newPanel();
frame.add(panel3);
Panelpanel4=newPanel();
frame.add(panel4);
Labellabel=newLabel("welcometo***system");
label.setFont(newFont("宋体",Font.PLAIN,26));
Labellabel1=newLabel("Account:");
TextFieldtextField=newTextField();
textField.setColumns(20);
Labellabel2=newLabel("Password:");
TextFieldtextField1=newTextField();//AWT没有passwordField
textField1.setColumns(20);
textField1.setEchoChar('*');
Buttonbutton=newButton("Login");
panel1.add(label);
panel2.add(label1);
panel2.add(textField);
panel3.add(label2);
panel3.add(textField1);
panel4.add(button);
frame.setBounds(200,200,500,250);
frame.setVisible(true);
frame.addWindowListener(newWindowAdapter(){
@Override
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});
}
}
4.我不要布局!!!
当设置frame.setLayout(null);时,可以使用给panel设置坐标的方式控制布局,更具灵活性!
packageAWT;
importjavafx.scene.layout.Pane;
importjava.awt.*;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjava.awt.event.WindowListener;
publicclasspanel{
publicstaticvoidmain(String[]args){
Frameframe=newFrame();//new一个窗口出来
Panelpanel=newPanel();//new一个面板
Panelpanel1=newPanel();//new一个面板
Panelpanel2=newPanel();//new一个面板
frame.setLayout(null);//设置布局为空
frame.setBounds(200,200,500,500);//设置窗口位置大小
panel.setBounds(20,15,460,50);//设置第一个面板
panel.setBackground(newColor(253,228,1));//设置面板颜色
panel1.setBounds(20,70,100,415);
panel1.setBackground(newColor(0,71,254));
panel2.setBounds(130,70,350,415);
panel2.setBackground(newColor(1,1,1));
frame.add(panel);//面板加入到窗口中
frame.add(panel1);
frame.add(panel2);
frame.setVisible(true);
frame.addWindowListener(newWindowAdapter(){
@Override
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});{
}
}
}
5.我都要!!!
为了使界面更加美观,可以使用多种布局的嵌套哦!
以上就是五种JAVAGUI布局管理的方式的详细内容,更多关于JAVAGUI布局的资料请关注毛票票其它相关文章!