-
2021-12-21 14:30:05
Java常见布局管理器总结
布局就是各组件在容器中的大小及摆放的位置。为了实现跨平台的特性并获得动态的布局效果,java将组件的布局问题交给布局管理器对象来管理。布局管理器负责确定每个组件的大小及位置,当容器发生变化时能够进行动态调整。常见的布局管理器有:FlowLayout(流式布局管理器)、BorderLayout(边界布局管理器)、GridLayout(网格布局管理器)、CardLayout(卡片布局管理器)。
FlowLayout(流式布局管理器):自动使用组件的最佳尺寸来显示组件,按照组件加入容器的先后顺序从左到右排列,一行排满之后自动转入下一行继续排列。每行组件默认居中对齐,组件之间的水平间距和垂直间距默认是五个像素。
BorderLayout(边界布局管理器):边界布局管理器将容器分为EAST(东区)、WEST(西区)、SOUTH(南区)、NORTH(北区)和CENTER(中心区)五个区域。这五个区域都可以放置组件,缺省的区域是中心区。将组件放入某个区后,该组件自动铺满整个区域。每个区域至多放置一个组件,如果放置多个组件,最后一个放入的组件会覆盖前面的组件。如果要在一个区域中放置多个组件时,必须先在该区域放置一个中间层容器。
GridLayout(网格布局管理器):将整个容器分为若干行、若干列,每个网格的宽和高都相同、只能放置一个组件。将组件放入到容器中时,按照添加的顺序,从左到右、从上到下顺次放入相应的网格中。
CardLayout(卡片布局管理器):主要用于处理多个组件共享同一显示空间的情况。它把容器中的所有组件处理成一系列的卡片,并摞起来形成一幅“扑克牌”,这些卡片(组件)大小相同、充满整个容器,同一时刻只能显示一个卡片(就像最前面那张扑克牌),显示的卡片可以切换。
更多相关内容 -
练习JAVA GUI设计和布局设计_java布局和日历_练习JAVAGUI设计和布局设计_
2021-09-28 20:23:53练习JAVA GUI设计和布局设计:编写一个窗体程序显示日历,只需要设计GUI,不需要事件处理。 -
java布局
2017-04-17 23:03:26原文地址:java布局管理器总结作者:技术羊 之前在使用的过程中一直对java中swing的布局管理器感到很困惑,以下是在网上找到的一篇文章。其中我重点关注了一下gridbaglayout。写的比较详尽: ...原文地址:java布局管理器总结作者:技术羊之前在使用的过程中一直对java中swing的布局管理器感到很困惑,以下是在网上找到的一篇文章。其中我重点关注了一下gridbaglayout。写的比较详尽:
1.BorderLayout
java.lang.Object
--java.awt.BorderLayout
将版面划分成东、西、南、北、中五个区域,将添加的组件按指定位置放置。
-
BorderLayout.EAST -
BorderLayout.WEST -
BorderLayout.SOUTH -
BorderLayout.NORTH -
BorderLayout.CENTER
构造函数:
BorderLayout()
建立组件间无间距的BorderLayout
BorderLayout(int hgap,int vgap)
建立组件间水平间距为hgap,垂直间距为vgap的BorderLayout
例一:
import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JButton; public class BorderLayoutDemo { public static void main(String[] args) { //建立一个JFrame,JFrame的默认LayoutManager为BorderLayout JFrame f=new JFrame("BorderLayout"); JButton btn=new JButton("BorderLayout.NORTH"); f.add(btn,BorderLayout.NORTH); btn=new JButton("BorderLayout.SOUTH"); f.add(btn,BorderLayout.SOUTH); btn=new JButton("BorderLayout.EAST"); f.add(btn,BorderLayout.EAST); btn=new JButton("BorderLayout.West"); f.add(btn,BorderLayout.WEST); btn=new JButton("BorderLayout.CENTER"); f.add(btn,BorderLayout.CENTER); f.pack(); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
运行结果:
在上例代码的第13,14行之间插入以下代码
f.setLayout(new BorderLayout(10,10));
运行结果:
2.FlowLayout
java.lang.Object
--java.awt.FlowLayout
组件按从左到右而后从上到下的顺序依次排列,一行不能放完则折到下一行。
构造函数:
FlowLayout()
建立一个默认为居中对齐,组件彼此有5单位的水平与垂直间距的FlowLayout
FlowLayout(int align)
建立一个可设置排列方式且组件彼此有5单位的水平与垂直间距的FlowLayout
FlowLayout(int align,int hgap,int vgap)
建立一个可设置排列方式与组件间距的FlowLayout
例二:
import java.awt.FlowLayout; import javax.swing.JFrame; import javax.swing.JButton; public class FlowLayoutDemo { public static void main(String[] args) { JFrame f=new JFrame("FlowLayout"); f.setLayout(new FlowLayout()); for(int i=0;i<7;i++){ JButton btn=new JButton("Button"+i); f.add(btn); } f.setSize(300,150); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
运行结果:
3.GridLayout
java.lang.Object
--java.awt.GridLayout
矩形网格形式对容器的组件进行布置
构造函数:
GridLayout()
建立一个默认为一行一列的GridLayout
GridLayout(int rows,int cols)
建立一个指定行(rows)和列(cols)的GridLayout
GridLayout(int rows,int cols,int hgap,int vgap)
建立一个指定行(rows)和列(cols),且组件间水平间距为hgap、垂直间距为vgap的GridLayout
例三:
import java.awt.GridLayout; import javax.swing.JFrame; import javax.swing.JButton; public class GridLayoutDemo { public static void main(String[] args) { JFrame f=new JFrame("GridLayout"); //设置f的布局管理器为3行3列的GridLayout,组件间水平与垂直间距为5 f.setLayout(new GridLayout(3,3,5,5)); for(int i=1;i<10;i++){ JButton btn=new JButton(String.valueOf(i)); f.add(btn); } f.pack(); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
运行结果:
4.GridBagLayout
java.lang.Object
--java.awt.GridBagLayout GridBagLayout以表格形式布置容器内的组件,将每个组件放置在每个单元格内,而一个单元格可以跨越多个单元格合并成一个单元格,即多个单元格可以组合成一个单元格,从而实现组件的自由布局。
构造函数:
GridBagLayout()
建立一个默认的GridBagLayout
每一个单元格都有各自的属性,而这些属性由GridBagConstrainsts类的成员变量来定义,且GridBagConstriaints中的所有成员变量都是public的。
java.lang.Object
--java.awt.GridBagConstratints
构造函数:
GridBagConstraints()
建立一个默认的GridBagConstraints
GridBagConstraints(intgridx,int gridy,int gridwidth,int gridheight,double weightx,double weighty,int anchor,int fill,Insets insets,int ipadx,int ipady)
建立一个指定其参数值的GridBagConstraints
GridBagConstraints的成员变量:
-
int gridx
-
int gridy
-
int gridwidth
-
int gridheight
-
double weightx
-
double weighty
-
int anchor
-
int fill
-
Insets insets
-
int ipadx
-
int ipady
gridx,gridy:设置组件所处行与列的起始坐标。例如gridx=0,gridy=0表示将组件放置在0行0列单元格内。
gridwidth,gridheight:设置组件横向与纵向的单元格跨越个数。
可以通过GridBagConstraints的RELETIVE,和REMAINDER来进行指定,它的用法是:
当把gridx值设置为GridBagConstriants.RELETIVE时,所添加的组件将被放置在前一个组件的右侧。同理,对gridy 值设置为GridBagConstraints.RELETIVE时,所添加的组件将被放置在前一个组件的下方,(这是一种根据前一个组件而决定当前组 件的相对放置方式)
对gridweight和gridheight也可以应用GridBagConstraints的REMAINDER方式,创建的组件会从创建的起点位置 开始一直延伸到容器所能允许的界限为止。该功能使得你可以创建跨越某些行或列的组件,从而改变相应方向上组件的数目,即使其后在布局的其他地方添加额外的组件也是如此。
weightx,weighty:设置窗口变大时的缩放比例。
anchor:设置组件在单元格中的对齐方式。由以下常量来定义
GridBagConstraints.CENTER
GridBagConstraints.EAST
GridBagConstraints.WEST
GridBagConstraints.SOUTH
GridBagConstraints.NORTH
GridBagConstraints.SOUTHEAST
GrisBagConstraints.SOUTHWEST
GridBagConstraints.NORTHEAST
GridBagConstraints.NORTHWEST
fill:当某个组件未能填满单元格时,可由此属性设置横向、纵向或双向填满。由以下常量来定义
GridBagConstraints.NONE
GridBagConstraints.HORIZONTAL
GridBagConstraints.VERTICAL
GridBagConstraints.BOTH
insets:设置单元格的间距。
java.lang.Object
--java.awt.Insets
Insets(int top,int left,int bottom,int right)
ipadx,ipady:将单元格内的组件的最小尺寸横向或纵向扩大。若一个组件的尺寸为30*10像素,ipadx=2,ipady=3,则单元格内的组件最小尺寸为34*16像素
例四:
import java.awt.GridBagLayout; import java.awt.GridBagConstraints; import java.awt.Insets; import javax.swing.JFrame; import javax.swing.JButton; public class GridBagLayoutDemo { public static void main(String[] args) { JFrame f=new JFrame("GridBagLayout"); f.setLayout(new GridBagLayout()); JButton btn=new JButton("first"); GridBagConstraints gbc=new GridBagConstraints(); //设定第一个单元格的属性值 gbc.gridx=0; gbc.gridy=0; gbc.gridwidth=1; gbc.gridheight=1; gbc.weightx=0; gbc.weighty=0; gbc.anchor=GridBagConstraints.NORTHWEST; gbc.fill=GridBagConstraints.NONE; gbc.insets=new Insets(0,0,0,0); gbc.ipadx=0; gbc.ipady=0; f.add(btn,gbc); //设定第二个单元格属性值 gbc.gridx=1; gbc.gridy=0; gbc.gridwidth=GridBagConstraints.REMAINDER; gbc.gridheight=1; gbc.weightx=1; gbc.weighty=0; gbc.anchor=GridBagConstraints.CENTER; gbc.fill=GridBagConstraints.HORIZONTAL; gbc.insets=new Insets(5,5,5,5); gbc.ipadx=0; gbc.ipady=0; btn=new JButton("second"); f.add(btn,gbc); //设定第三个单元格属性值 gbc.gridx=0; gbc.gridy=1; gbc.gridwidth=1; gbc.gridheight=GridBagConstraints.REMAINDER; gbc.weightx=0; gbc.weighty=1; gbc.anchor=GridBagConstraints.CENTER; gbc.fill=GridBagConstraints.VERTICAL; gbc.insets=new Insets(0,0,0,0); gbc.ipadx=10; gbc.ipady=10; btn=new JButton("three"); f.add(btn,gbc); f.pack(); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
运行结果:
将窗口变大后的效果:
5.CardLayout
java.lang.Object
--java.awt.CardLayout
以层叠的方式布置组件,如同很多张卡片叠在一起,从而只能看到最上面的那一张卡片。
构造函数:
CardLayout()
建立一个无间距的CardLayout
CardLayout(int hgap,int vgap)
建立一个水平间距为hgap、垂直间距为vgap的CardLayout
例五:
import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JLabel; import javax.swing.JButton; public class CardLayoutDemo { private static JPanel p; public static void main(String[] args) { JFrame f=new JFrame("CardLayout"); p=new JPanel(); //将JPanel p的LayoutManager设置为CardLayout p.setLayout(new CardLayout()); //新建两个JPanel JPanel p1=new JPanel(); JPanel p2=new JPanel(); JLabel lb=new JLabel("first panel"); p1.add(lb); lb=new JLabel("second panel"); p2.add(lb); //将新建的两个JPanel p1,p2添加到p中 p.add(p1,"frist"); p.add(p2,"second"); //设置默认显示first所对应的JPanel p1 ((CardLayout)p.getLayout()).show(p, "frist"); JButton cbtn=new JButton("Change"); cbtn.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { //当按下Change按钮时,显示second 对应的JPanel p2 ((CardLayout)p.getLayout()).show(p, "second"); } }); f.add(cbtn,BorderLayout.NORTH); f.add(p,BorderLayout.CENTER); f.setSize(400,150); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
运行结果:
按下Change按钮后的结果:
6.BoxLayout
java.lang.Object
--javax.swing.BoxLayout
以嵌套式盒子来管里容器的布局,通过将组件放入水平或垂直形盒子以多层嵌套的方式进行布局。
构造函数:
BoxLayout(Container target,int axis)
建立一个水平或垂直的BoxLayout,BoxLayout提供两个常数X_AXIS和Y_AXIS来表示水平或垂直排列。
说到BoxLayout,就不得不提到Box这个Container,Box这个Container默认的Layout为BoxLayout,而它只能使用这个Layout,否则编译时会有Error产生。
java.lang.Object
--javax.swing.Box
Box有水平的和垂直的两种形式。
构造函数:
Box(int axis)
建立一个Box Container(容器),并指定组件的排列方式,通过使用BoxLayout提供的两个常数X_AXIS和Y_AXIS来指定。
方法:
public static Box createHorizontalBox()
构造一个水平排列的Box组件。
import javax.swing.Box; import javax.swing.JFrame; import javax.swing.JButton; public class BoxLayoutDemo { public static void main(String[] args) { JFrame f=new JFrame("BoxLayout"); //创建水平Box组件 Box box=Box.createHorizontalBox(); JButton btnA=new JButton("A"); JButton btnB=new JButton("B"); box.add(btnA); box.add(btnB); f.add(box); f.pack(); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
运行结果:
public static Component createHorizontalGlue()
构造一个Glue组件可向水平方向延伸。
在上例17,18行间插入以下代码
box.add(Box.createHorizontalGlue());
运行结果:
将窗口变大后的效果:
public static Component createHorizontalStrut(int width)
构造一个水平指定宽度的Strut组件。
将上例代码改成以下代码
box.add(Box.createHorizontalStrut(50));
运行结果:
public static Component createRigidArea(Dimension d)
构造一个指定长宽的二维Rigid组件。
将上例代码改成以下代码
box.add(Box.createRigidArea(new Dimension(50,50)));
运行结果:
public static Box createVerticalBox()
构造一个垂直排列的Box组件。
public static Component createVerticalGlue()
构造一个垂直的Glue组件。
public static Component createVerticalStrut(int height)
构造一个垂直的Strut组件。
public static Component createGlue()
构造一个Glue组件可向水平方向延伸。
Box.Fillter
Fillter是Box的inner class(内部类),它的功能与Rigid相似,都可以指定长宽的大小限制,且Fillter可以指定最大、较佳、最小的长宽大小。
-
-
深入Java布局管理器
2020-12-22 20:52:50Java的GUI界面定义是由awt类和swing类来完成的。它在布局管理上面采用了容器和布局管理分离的方案。也是说,容器只管将其他小件放... 现在我们来看Java中布局管理器的具体实现。我们前面说过,Java中的容器类(Contai -
java布局管理有哪些?详细展示
2021-02-12 22:05:33今天再为大家介绍一些相关知识,也就是java布局管理有哪些,并且通过详细的图片为大家展示。首先我们需要了解的是,java为我们提供了几个常用的布局管理器类,比如说:FlowLayout、BorderLayout、GridLayout、...上次为大家介绍过在java中swing有哪些组件?分组布局的含义?今天再为大家介绍一些相关知识,也就是java布局管理有哪些,并且通过详细的图片为大家展示。
首先我们需要了解的是,java为我们提供了几个常用的布局管理器类,比如说:FlowLayout、BorderLayout、GridLayout、GridBagLayout等。
接下来分别为大家介绍一下。
一、java.awt FlowLayout(流布局)
它将组件按从左到右然后从上到下的顺序依次排列,一行不能放完就折到下一行继续放置。流式布局可以用左对齐、居中对齐、右对齐的方式排列组件。如下图所示:
流式布局不限制它所管理的组件的大小,允许他们有最佳的大小。当容器最缩放时,组件的位置可以改变,但组件的大小不改变。JPanel的默认布局为流式布局管理。
二、java.awt BorderLayout(边界布局)
它将组件按东、南、西、北、中五个区域放置,每个方向最多只能放置一个组件。如下图所示:
JFrame窗体,JDialog对话框组件默认布局方法为边界布局(BorderLayout),边界布局的五个部分不是都要添加,中间部分会自动调节大小。
三、java.awt GridLayout(网格布局)
它形似一个无框线的表格,每个单元格中放一个组件。将容器分割成多行多列,组件被填充到每个网格中,添加到容器中的组件首先放置在左上角的网格中,然后从左到右放置其他组件,当占满该行的所有网格后,接着继续在下一行从左到右放置组件。如下图所示:
另外,组件的相对位置不随容器的缩放而改变,但大小会改变,所有组件的大小相同。并且可以通过GridLayout(int rows, int cols,
int hgap, int vgap)来指定网格的行/列,水平间隙/垂直间隙。最后java.awt GridBagLayout非常灵活,可以指定组件放置的具体位置及占用单元格数目。
四、一个界面只可以有一个JFrame窗体组件,但是可以有多个Jpanel面板组件,而JPanel上也可使用各种布局管理器,这样可以组合使用达到较为复杂的布局效果。
JPanel是JComponent的子类。默认布局为流式布局(FlowLayout),属于容器类组件,可以加入别的组件。
代码如下所示:import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class MultiLayout extends JFrame
{
private static final long serialVersionUID = 1 L;
// 定义组件
JPanel jp1, jp2;
JButton jb1, jb2, jb3, jb4, jb5, jb6;
public static void main(String[] args)
{
new MultiLayout();
}
public MultiLayout()
{
// 创建组件
// JPanel布局默认是FlowLayout流布局
jp1 = new JPanel();
jp2 = new JPanel();
jb1 = new JButton("西瓜");
jb2 = new JButton("苹果");
jb3 = new JButton("荔枝");
jb4 = new JButton("葡萄");
jb5 = new JButton("桔子");
jb6 = new JButton("香蕉");
// 设置布局管理器(Jpanel默认流布局)
jp1.add(jb1);
jp1.add(jb2);
jp2.add(jb3);
jp2.add(jb4);
jp2.add(jb5);
// 把Panel加入JFrame
this.add(jp1, BorderLayout.NORTH);
this.add(jb6, BorderLayout.CENTER);
this.add(jp2, BorderLayout.SOUTH);
// 设置窗体
// 窗体大小
this.setSize(300, 250);
// 屏幕显示初始位置
this.setLocation(200, 200);
// 显示
this.setVisible(true);
// 退出窗体后将JFrame同时关闭
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
图片如下:
以上就是关于java布局管理有哪些的具体内容,并且通过具体的图片为大家展示。想要了解更多java基础以及常见问题,敬请关注奇Q工具网。
推荐阅读:
-
实验四 Java 布局管理和 java的事件.doc
2022-03-18 18:49:34实验四 Java 布局管理和 java的事件.doc -
Java-Layout-Manager:包含和操作各种 Java 布局
2021-06-04 09:59:43Java布局管理器 ====================== 包含和操作各种 Java 布局。 要运行此程序,请使用“CardLayoutByRonald.java”。 -
最最最实用的5种Java布局方式
2020-12-17 08:01:50java的布局方式非常常用,以下介绍5种常用的布局方式。 1.FlowLayout(流式布局) import java.awt.Container; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; /** 将组件已...java的布局方式非常常用,以下介绍5种常用的布局方式。
1.FlowLayout(流式布局)
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
/**- 将组件已加入顺序从左到右排序,一行
- 排满就会去第二行。
- 每行组件剧中排列
*/
public class FlowLayoutDemo {private JFrame frame; private JButton button1,button2,button3,button4,button5; public static void main(String[] args) { FlowLayoutDemo fd = new FlowLayoutDemo(); fd.go(); } private void go() { frame = new JFrame("flowlayout"); Container contentPane = frame.getContentPane(); contentPane.setLayout(new FlowLayout()); button1 = new JButton("OK"); button2 = new JButton("OPEN"); button3 = new JButton("CLOSE"); button4 = new JButton("aaa"); button5 = new JButton("CLOSEccc"); contentPane.add(button1); contentPane.add(button2); contentPane.add(button3); contentPane.add(button4); contentPane.add(button5); frame.setSize(300,200); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
}12345678910111213141516171819202122232425262728293031323334353637383940运行结果如下
2.BorderLayout(边界布局)
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;/**
- 由BorderLayout管理的容器被划分为5个区域
- North south west east center
*/
public class BorderLayoutDemo {
private JFrame frame;
private JButton be,bw,bn,bs,bc;public static void main(String[] args) { BorderLayoutDemo bd = new BorderLayoutDemo(); bd.go(); } private void go() { frame = new JFrame("BorderLayoutDemo"); be = new JButton("east"); bw = new JButton("west"); bn = new JButton("north"); bs = new JButton("south"); bc = new JButton("center"); frame.getContentPane().add(be,BorderLayout.EAST); frame.getContentPane().add(bw,BorderLayout.WEST); frame.getContentPane().add(bn,BorderLayout.NORTH); frame.getContentPane().add(bs,BorderLayout.SOUTH); frame.getContentPane().add(bc,BorderLayout.CENTER); frame.setSize(300, 200); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
}
12345678910111213141516171819202122232425262728293031323334353637383940运行结果如下
3.GridLayout(网格布局)
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;import javax.swing.JButton;
import javax.swing.JFrame;/**
- 将容器分为若干行和列,组件依次放入其中
- 每个组件占据一格。
*/
public class GridLayoutDemo {
public static void main(String[] args) {
MyWindow that = new MyWindow();
that.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}@SuppressWarnings(“serial”)
class MyWindow extends JFrame {
private JButton b1,b2,b3,b4,b5,b6;
public MyWindow() {
setTitle(“grid”);
Container contentPane = getContentPane();
contentPane.setPreferredSize(new Dimension(400,300));
contentPane.setLayout(new GridLayout(3,2));//3行2列
b1 =new JButton(“b1”);
b2 =new JButton(“b2”);
b3 =new JButton(“b3”);
b4 =new JButton(“b4”);
b5 =new JButton(“b5”);
b6 =new JButton(“b6”);
contentPane.add(b1);
contentPane.add(b2);
contentPane.add(b3);
contentPane.add(b4);
contentPane.add(b5);
contentPane.add(b6);
pack();
setVisible(true);
}
}1234567891011121314151617181920212223242526272829303132333435363738394041424344运行结果如下
4.BoxLayout(盒式布局)
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Label;import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;/**
- 将容器中的组件水平或者竖直排成一行或一列
*/
public class BoxLayoutDemo {private JFrame jFrame; private JPanel jPanel,jPanel2; public static void main(String[] args) { BoxLayoutDemo boxLayoutDemo = new BoxLayoutDemo(); boxLayoutDemo.go(); } private void go () { jFrame = new JFrame("box lay"); Container contentPane = jFrame.getContentPane(); jPanel = new JPanel(); jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.Y_AXIS)); jPanel.add(new Label("1")); jPanel.add(new Label("2")); jPanel.add(new Label("3")); contentPane.add(jPanel, BoxLayout.X_AXIS); jPanel2 = new JPanel(); jPanel2.setLayout(new BoxLayout(jPanel2, BoxLayout.X_AXIS)); jPanel2.add(new Label("yes")); jPanel2.add(new Label("no")); jPanel2.add(new Label("cancel")); //contentPane.add(jPanel2,BorderLayout.SOUTH); //contentPane.add(jPanel2,FlowLayout.CENTER); jFrame.pack(); jFrame.setVisible(true); jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
}
123456789101112131415161718192021222324252627282930313233343536373839404142434445运行结果如下
5.CradLayout(卡片布局)
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;/**
- 卡片布局 每时每刻只显示一张
*/
@SuppressWarnings(“serial”)
public class CardlayoutDemo extends JFrame {public static void main(String[] args) { new CardlayoutDemo(); } public CardlayoutDemo() { this.setTitle("Cardlayout"); this.setSize(400, 400); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container c = this.getContentPane(); JButton jbtn1 = new JButton("上一个"); c.add(jbtn1, BorderLayout.NORTH); final JPanel mainJPanel = new JPanel(); //匿名内部类只能访问final变量 final CardLayout cardLayout = new CardLayout(); mainJPanel.setLayout(cardLayout); mainJPanel.add(new JLabel("第1张"), "one"); mainJPanel.add(new JLabel("第2张"), "two"); mainJPanel.add(new JLabel("第3张"), "three"); mainJPanel.add(new JLabel("第4张"), "four"); c.add(mainJPanel, BorderLayout.CENTER); JButton jbtn2 = new JButton("下一个"); c.add(jbtn2, BorderLayout.SOUTH); jbtn1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { cardLayout.previous(mainJPanel); } }); jbtn2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { cardLayout.next(mainJPanel); } }); //cardLayout.show(mainJPanel, "three"); this.setVisible(true); }
}
运行结果如下
-
java 布局管理器
2012-09-18 11:11:40java布局管理器测试代码,绝对能运行,环境为jdk1.6下 -
java布局管理
2011-09-29 12:03:41java布局管理,关于一些基础和高级的应用 -
java布局设置按钮大小的设定
2012-04-04 13:59:37java布局设置按钮大小的设定及java编程。 -
java布局图形历年所有文件
2016-04-15 09:59:44java图形界面相关的所有技术,工作5年多了,一直都用过,之前整理的要删除了,上传csdn分享给大家。 -
java布局管理器---BorderLayout(边界布局管理器)
2021-08-21 16:42:59BorderLayout(边界布局管理器)、BoxLayout(箱式布局管理器)、CardLayout(卡片布局管理器)、FlowLayout(流式布局管理器)、GridBagLayout(网格包布局管理器)、GridLayout(网格布局管理器)、GroupLayout(分组布局管理器... -
Java界面布局管理(简单)
2022-04-25 11:31:30布局:将控件有序的放在界面上 eg:将一个按钮,一个文本框放在界面上 import javax.swing.*; import java.awt.*; class Layout1 extends JFrame{ private JTextField jtf = new JTextField(20); private JButton ... -
java:布局方法(绝对布局)
2020-10-29 21:10:13绝对的布局一、简单引导二、流程图三、步骤详情(一)创建一个窗体1.源码A2.源码A的运行效果(二)在窗体里添加容器源码B(三)添加组件1.源码C2.源码C的运行效果四、定位日期 一、简单引导 layout(布局) 重点代码... -
java布局管理器总结
2017-04-03 18:11:47BorderLayout FlowLayout GridLayout GridBagLayout ...java.lang.Object –java.awt.BorderLayout 将版面划分成东、西、南、北、中五个区域,将添加的组件按指定位置放置。 BorderLayout.EAST Border -
java布局实例
2012-07-25 23:28:47java布局实例 -
JAVA布局管理.doc
2013-06-18 13:15:07JAVA布局管理.doc -
五种JAVA GUI布局管理的方式
2021-03-22 16:39:531. 流式布局(FlowLayout)定义:通俗地说,流式布局就是根据窗口大小,自动改变窗口内组件的位置。例如:原窗口大小一行可以容纳10个BUTTON,但将窗口缩小后,每行仅能容纳5个BUTTON,此时原先的10个BUTTON中的五个就... -
Java布局管理—卡片布局(CardLayout)
2019-07-22 11:17:27卡片布局能够让多个组件共享同一个显示空间,共享空间的组件之间的关系就像一叠牌,组件叠在一起,初始时显示该空间中第一个添加的组件,通过CardLayout类提供的方法可以切换该空间中显示的组件。 构造方法: ... -
Java中三种常用布局方式
2021-09-20 19:43:36Java中FlowLayout,GridLayout和BorderLayout详解 一、流程布局(FlowLayout) 顾名思义, FlowLayout是一种布局,它允许组件流到可见部分的末端。 FlowLayout基本上有助于开发响应速度更快的UI,并使组件保持自由... -
java界面布局—日历
2015-12-03 19:30:28使用GridLayout布局的简单日历窗口java小程序 -
java:布局方法(网格布局)
2021-04-22 00:42:38网格布局简单说明关键代码流程图例子说明默认情况源码运行效果其他情况 简单说明 网格布局,用常说的几行几列来理解便可,按几行几列分成多个大小统一的组件(这里选“按钮”)。一个窗体,在里边布置“按钮”用网格... -
Java——GUI——布局
2021-11-21 16:39:09Java语言GUI图形用户界面中,提供了三种布局(还有空布局),来完成图形用户界面布局,复杂的布局都是利用三种布局相互嵌套来完成。 流式布局 东南西北中布局 网格布局 1、流式布局 流式布局默认组件都是以居中... -
华为鸿蒙HarmonyOS Java 布局开发
2021-02-01 16:43:44在HarmonyOS应用中,所有的用户界面元素都是由 Component和ComponentContainer对象构成。...Java UI 框架提供了一些常用的界面元素,也可以称为组件,组件一般直接继承Component 或它的子类,如 Text、Image等 C.. -
Java布局管理器之插件(一)---JPanel
2019-10-31 14:15:43在图形用户界面编程中, 如果只是普通的组件布局, 我们用前面讲的三种布局管理器就可以解决, 但在比较复杂的布局要求时,就需要使用布局管理器的组合使用。 面板组件 (JPanel) JPanel :面板组件,非顶层容器,... -
java布局管理设计
2012-05-31 14:51:00自己瞎写的一两个java布局的程序,完全是打发时间 -
Java AWT中常用的三种布局管理器
2022-04-09 23:12:34在java.awt 包中提供了5中常用的布局管理器,分别式FlowLayout(流式布局管理器)、BorderLayout(边界布局管理器)、GridLayout(网格布局管理器)、GridBagLayout(网格包布局管理器)和CradLayout(卡片布局管理器... -
java图形界面编程之常用组件、布局管理器
2012-05-09 10:27:12韩顺平java图形界面编程之常用组件、布局管理器