java进阶09 GUI图形界面 布局管理器之BorderLayout

  前面虽然实现了窗口,但是一般的应用有很多其他东西,如按钮,输入框之类的。

  而这些都是建立在一个东西上面的,那就是布局管理器。

  常用的布局管理器有3个

  BorderLayout:边界布局管理器

  FlowLayout:流式布局管理器

  GridLayout:网格布局管理器

  今天先说说BorderLayout

  我们先修改下UI类,这次是最后一次修改,这次会将UI类与管理器和控件彻底分开,再也不用操作UI类

  


package Frame;

import javax.swing.JFrame;

public class UI{
JFrame frame;
String title;
int frame_w;
int frame_h;
int location_x;
int location_y;

UI(){
frame=new JFrame();
frame.setTitle("Word");//设置标题
frame.setSize(500, 500);//设置窗口大小
frame.setLocation(400, 200);//设置窗口出现在屏幕的坐标
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//点击退出时关闭程序
//设置布局
MyLayout layout=new MyLayout(frame);
layout.creatLayout();
frame.setVisible(true);//设置窗口可见

}
public void setFrame_Title(String title){
this.title=title;
frame.setTitle(title);
}
public void setFrame_Size(int frame_w,int frame_h){
this.frame_w=frame_w;
this.frame_h=frame_h;
frame.setSize(frame_w, frame_h);
}
public void setFrame_Location(int location_x,int location_y){
this.location_x=location_x;
this.location_y=location_y;
}
public String getFrame_Title(){
return this.title;
}
public int getFrame_SizeW(){
return this.frame_w;
}
public int getFrame_SizeH(){
return this.frame_h;
}
public int getFrame_LocationX(){
return this.location_x;
}
public int getFrame_LocationY(){
return this.location_y;
}
}

  多了2行代码

 MyLayout layout=new MyLayout(frame); 
layout.creatLayout();
这里就是加载自己定义的布局类MyLayout
而creatLayout就是将布局类的设置的启动器吧,这样说复杂了。就是对外留的接口函数


public class MyLayout{
JFrame frame;
public MyLayout(JFrame frame) {
// TODO Auto-generated constructor stub
this.frame=frame;
}
//留给UI类操作的函数
public void creatLayout(){
ShowBorderLayout();
}
//BorderLayout的用法
void ShowBorderLayout(){
JButton East=new JButton("东方");
JButton West=new JButton("西方");
JButton North=new JButton("北方");
JButton South=new JButton("南方");
JButton Center=new JButton("中央");

frame.add(East, BorderLayout.EAST);
frame.add(West, BorderLayout.WEST);
frame.add(North, BorderLayout.NORTH);
frame.add(South,BorderLayout.SOUTH);
frame.add(Center, BorderLayout.CENTER);
/*
*如果不是五个按钮全部添加,则会以扩充中部填充,但中部不会被其他四个填充
* */

}

}


  这里的构造函数的参数是JFrame 能理解吧? 因为对布局的操作都是基于JFrame的 所以将UI类的JFrame传了过来。

  ShowBorderLayout就是边界布局的具体代码。JBotton就是按钮控件。

  显示一下效果

  

  这里是添加了5个按钮 如果不全呢? 改下代码

  


package Frame;

import java.awt.BorderLayout;

import javax.swing.JButton;
import javax.swing.JFrame;

public class MyLayout{
JFrame frame;
public MyLayout(JFrame frame) {
// TODO Auto-generated constructor stub
this.frame=frame;
}
//留给UI类操作的函数
public void creatLayout(){
ShowBorderLayout();
}
//BorderLayout的用法
void ShowBorderLayout(){
JButton East=new JButton("东方");
JButton West=new JButton("西方");
JButton North=new JButton("北方");
JButton South=new JButton("南方");
JButton Center=new JButton("中央");

//frame.add(East, BorderLayout.EAST);
frame.add(West, BorderLayout.WEST);
frame.add(North, BorderLayout.NORTH);
frame.add(South,BorderLayout.SOUTH);
frame.add(Center, BorderLayout.CENTER);
/*
*如果不是五个按钮全部添加,则会以扩充中部填充,但中部不会被其他四个填充
* */

}
void ShowFlowLayout(){

}
}

  注释掉东方的按钮。效果是

  

  就是这样,其他就没有什么注意的地方了。

  这里的MyLayout类就是操作具体界面的类了,现在已经不用再管UI类了,改变窗口的属性可以再主函数中改,改变布局就在这个类中改。

  这里不管是边界还是流式布局还是网格布局管理器,都直接写个ShowXXXLayout的函数就可。

  这样就很好的封装了UI类,方便以后修改代码和维护。

  就是java编程里面的一个很重要的思想。

 
 

java进阶09 GUI图形界面 布局管理器之BorderLayout,布布扣,bubuko.com

时间: 2024-11-13 16:00:02

java进阶09 GUI图形界面 布局管理器之BorderLayout的相关文章

java进阶10 GUI图形界面 布局管理器之FlowLayout GridLayout

先说说FlowLayout 流式布局管理器. 效果 这是当第一行显示不下,才转到第二行的. 看看代码 package Frame; import java.awt.BorderLayout; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; public class MyLayout{ JFrame frame; public MyLayout(JFrame frame) { //

java进阶08 GUI图形界面

图形化用户界面(GUI) 简而言之,就是可视化编程. 要想实现可视化界面(窗口),需要用到JFrame类. package Frame; public class JFrame1 { public static void main(String[] args){ UI ui=new UI(); } } 先建一个主函数,而主函数中的操作只有一句代码.这样做,既能直观又方便后期修改. 接下来是UI类的实现 package Frame; import javax.swing.JFrame; publi

三十、Java图形化界面设计——布局管理器之BorderLayout(边界布局)

边界布局管理器把容器的的布局分为五个位置:CENTER.EAST.WEST.NORTH.SOUTH.依次相应为:上北(NORTH).下南(SOUTH).左西(WEST).右东(EAST),中(CENTER),例如以下图所看到的. 特征: l  能够把组件放在这五个位置的随意一个,假设未指定位置,则缺省的位置是CENTER. l  南.北位置控件各占领一行,控件宽度将自己主动布满整行.东.西和中间位置占领一行;若东.西.南.北位置无控件,则中间控件将自己主动布满整个屏幕.若东.西.南.北位置中不管

04 Java图形化界面设计——布局管理器之BorderLayout(边界布局)

边界布局管理器把容器的的布局分为五个位置:CENTER.EAST.WEST.NORTH.SOUTH.依次对应为:上北(NORTH).下南(SOUTH).左西(WEST).右东(EAST),中(CENTER),如下图所示. 特征: l  可以把组件放在这五个位置的任意一个,如果未指定位置,则缺省的位置是CENTER. l  南.北位置控件各占据一行,控件宽度将自动布满整行.东.西和中间位置占据一行;若东.西.南.北位置无控件,则中间控件将自动布满整个屏幕.若东.西.南.北位置中无论哪个位置没有控件

java Swing布局管理器之BorderLayout布局

BorderLayout边界布局管理器把容器的的布局分为五个位置:CENTER.EAST.WEST.NORTH.SOUTH.依次对应为:上北(NORTH).下南(SOUTH).左西(WEST).右东(EAST),中(CENTER),如下图所示. 特征: 可以把组件放在这五个位置的任意一个,如果未指定位置,则缺省的位置是CENTER. 南.北位置控件各占据一行,控件宽度将自动布满整行.东.西和中间位置占据一行;若东.西.南.北位置无控件,则中间控件将自动布满整个屏幕.若东.西.南.北位置中无论哪个

Swing-布局管理器之BorderLayout(边界布局)-入门

注:本文内容基本源于Java图形化界面设计——布局管理器之BorderLayout(边界布局),笔者学习过程中根据自身理解进行少量编辑. 边界布局管理器(BorderLayout)把容器的的布局分为五个位置:CENTER.EAST.WEST.NORTH.SOUTH.依次对应为:上北(NORTH).下南(SOUTH).左西(WEST).右东(EAST),中(CENTER),如下图所示. 特征: l  可以把组件放在这五个位置的任意一个,如果未指定位置,则缺省的位置是CENTER. l  南.北位置

三十三、Java图形化界面设计——布局管理器之null布局(空布局)

摘自http://blog.csdn.net/liujun13579/article/details/7774267 三十三.Java图形化界面设计--布局管理器之null布局(空布局) 一般容器都有默认布局方式,但是有时候需要精确指定各个组建的大小和位置,就需要用到空布局. 操作方法: 1)       首先利用setLayout(null)语句将容器的布局设置为null布局(空布局). 2)       再调用组件的setBounds(int x, int y, int width,int

三十一、Java图形化界面设计——布局管理器之GridLayout(网格布局)

摘自http://blog.csdn.net/liujun13579/article/details/7772491 三十一.Java图形化界面设计--布局管理器之GridLayout(网格布局) 网格布局特点: l  使容器中的各组件呈M行×N列的网格状分布. l  网格每列宽度相同,等于容器的宽度除以网格的列数. l  网格每行高度相同,等于容器的高度除以网格的行数. l  各组件的排列方式为:从上到下,从左到右. l  组件放入容器的次序决定了它在容器中的位置. l  容器大小改变时,组件

Java 图形编程 二:布局管理器之顺序布局

package second; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class Layout { private Frame f; private Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b10;//声明10个button //构造函数,实例化button 1 - 10 Layout(){ b1 = new B