五种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布局的资料请关注毛票票其它相关文章!