精华内容
下载资源
问答
  • java中JFrame布局

    2012-12-10 16:38:59
    java中JFrame的几种布局,流布局,网格布局,卡片布局,边框布局
  • java布局

    千次阅读 多人点赞 2017-04-17 23:03:26
    原文地址:java布局管理器总结作者:技术羊 之前在使用的过程一直对javaswing的布局管理器感到很困惑,以下是在网上找到的一篇文章。其中我重点关注了一下gridbaglayout。写的比较详尽: ...
    原文地址:java布局管理器总结作者:技术羊

    之前在使用的过程中一直对java中swing的布局管理器感到很困惑,以下是在网上找到的一篇文章。其中我重点关注了一下gridbaglayout。写的比较详尽:

    1. BorderLayout

    2. FlowLayout

    3. GridLayout

    4. GridBagLayout

    5. CardLayout

    6. BoxLayout


    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);  
        }  
      
    }  

    运行结果:

    BorderLayout

    在上例代码的第13,14行之间插入以下代码

     

    f.setLayout(new BorderLayout(10,10));

    运行结果:

    BorderLayout

     


     

    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);  
        }  
      
    }  

    运行结果:

    FlowLayout

     


     

    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);  
        }  
      
    }  

    运行结果:

    GridLayout2

     


     

    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);  
        }  
      
    } 

    运行结果:

     

    GridBagLayout

    将窗口变大后的效果:

     

    GridBagLayout2

     


    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);  
        }  
      
    }   

    运行结果:

    CardLayout1

    按下Change按钮后的结果:

     

    CardLayout2


    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);  
        }  
          
    }   

    运行结果:

    BoxLayout1

    public static Component createHorizontalGlue()

    构造一个Glue组件可向水平方向延伸。

    在上例17,18行间插入以下代码

    box.add(Box.createHorizontalGlue());  

    运行结果:

    BoxLayout2

    将窗口变大后的效果:

     BoxLayout3

    public static Component createHorizontalStrut(int width)

    构造一个水平指定宽度的Strut组件。

    将上例代码改成以下代码

    box.add(Box.createHorizontalStrut(50));  

    运行结果:

    BoxLayout4

    public static Component createRigidArea(Dimension d)

    构造一个指定长宽的二维Rigid组件。

    将上例代码改成以下代码

    box.add(Box.createRigidArea(new Dimension(50,50)));  

    运行结果:

    BoxLayout5

    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可以指定最大、较佳、最小的长宽大小。

    展开全文
  • 最最最实用的5种Java布局方式

    千次阅读 2020-12-17 08:01:50
    java布局方式非常常用,以下介绍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);
    }
    

    }
    运行结果如下
    在这里插入图片描述

    展开全文
  • JFrame q =new JFrame(); Container a=q.getContentPane(); setLayout(new BorderLayout()); final JProgressBar progressBar = new JProgressBar(); // 创建进度条 // 将进度条放置在窗体合适位置 ...
  • java中Frame类默认的布局管理器为BorderLayout,其主要是将Frame窗口分为东西南北五个区域,每个区域仅限于放一个组件,如加入多个,前免得会被覆盖,解决方法为:可以在一个区域加入文本框Panel,在Panel可以...

        java中Frame类默认的布局管理器为BorderLayout,其主要是将Frame窗口分为东西南北中五个区域,每个区域仅限于放一个组件,如加入多个,前免得会被覆盖,解决方法为:可以在一个区域中加入文本框Panel,在Panel中可以加入其他的组件。如果不指定加入的位置,则默认加入CENTER区域。

        下面我们将介绍在Frame中运用Border Layout布局管理器进行位置布局的两种实现方式:

    (1)运用BorderLayout中的常量进行插入,BorderLayout中有五个常量:BorederLayout.NORTH、BorderLayout.SOUTH、BorderLayout.WEST、BorderLayout.EAST和BorderLayout.CENTER),我们可以利用这五个常量进行布局安排。

    代码如下:

    Frame f = new Frame("BorderLayout");
    Button b = new Button("b1");
    f.add(b, BorderLayout.EAST);
    f.setBounds(100, 100, 100, 100);
    f.setVisible(true);

    (2)运用字符串进行插入。

    代码如下:

    Frame f = new Frame("BorderLayout");
    Button b = new Button("b2");
    f.add(b, "East");
    f.setBounds(100, 100, 100, 100);
    f.setVisible(true);

    对于以上两种方法的比较,通常使用第一种方法,因为如果出错,第一种方法会在编译时报错,而第二种方法只能在运行时报错。

    展开全文
  • java网格布局

    千次阅读 2018-09-22 20:48:32
    package javax.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; import java.awt.Container; import java.awt.GridBagLayout; import java.awt.... * 网格布局  */ public class W...

    package javax.awt.GridLayout;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import java.awt.Container;
    import java.awt.GridBagLayout;
    import java.awt.GridLayout;
    /*
     * 网格布局
     */
    public class WG extends JFrame{
     public WG() {
         setBounds(100,200,300,100);  //设置窗口大小
         setDefaultCloseOperation(EXIT_ON_CLOSE);//设置关闭规则
         Container c=getContentPane();  //获取窗口容器
         c.setLayout(new GridLayout(4,5)); //设置为网格布局
         for(int i=0;i<20;i++) {  //循环添加按钮
            c.add(new JButton("按钮"+i)); 
         }
         setVisible(true);  //窗口可视化
     }
     public static void main(String[] args) {
        new WG();
    }
    }

     

    运行截图

    展开全文
  • Java中的窗口布局

    千次阅读 2010-12-19 21:46:00
    组件放置在窗体上的方式不是通过绝对坐标控制,而是通过“布局管理器”根据组件加入的顺序决定其位置。所以,如果窗口的大小改变了,组件的大小、形状和位置也能够做相应的改变。 2、JApplet、JFrame、JWindow和...
  • 作者:firstmiki ...来源:firstmiki的博客...这篇博文仅仅简单介绍了三种常见的布局管理器,都是一些简单应用; 一、 边界布局管理器(FlowLayout) /* * 功能:演示边界布局管理器:组件的位置和大小 */ package GU...
  • Java中设置JPanel自定义布局,可通过设置空布局即绝对布局来实现,代码如下: package menu; import java.awt.Container; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; ...
  • Frame默认的是BorderLayout布局管理器 Panel默认的是FlowLayout布局管理器
  • Java中的null布局

    千次阅读 2014-05-12 20:04:08
    Java中的null布局,就是没有布局,或称空布局。 null布局和Component类的setBounds方法结合使用,便可以进行这种不受限制的布局。 进行null布局,setBounds方法是关键,其函数如下: public void setBounds(int x,...
  • JAVA 界面布局

    千次阅读 2011-06-16 12:16:00
    JAVA的界面布局原理:因为Java是跨平台语言,使用绝对坐标显然会导致问题,即在不同平台、不同分辨率下的显示效果不一样。Java 为了实现跨平台的特性并且获得动态的布局效果,Java将容器内的所有组件安排给一个...
  • JAVA swing 布局

    千次阅读 2010-03-03 09:48:00
    Java中一共有6种布局管理器,通过使用6种布局管理器组合,能够设计出复杂的界面,而且在不同操作系统平台上都能够有一致的显示界面。6种布局管理器分别是BorderLayout、BoxLayout、FlowLayout、GirdBagLayout、
  • java布局——流式布局

    千次阅读 2016-07-13 13:44:54
    * 流式布局实现 * */ package swing; import java.awt.*; import javax.swing.*; public class Test3 extends JFrame{ JButton jb1,jb2,jb3,jb4,jb5,jb6; public static void main(String[] args) { // TODO...
  • java布局——网格布局

    千次阅读 2016-07-13 13:46:15
    * 网格布局实现 * */ package swing; import java.awt.*; import javax.swing.*; public class Test4 extends JFrame{ int size=9; JButton jbs[] =new JButton[size]; public static void main(String[] ...
  • java布局——边界布局

    千次阅读 2016-07-13 13:41:58
    * 边界布局实现 * */ package swing; import java.awt.*; import javax.swing.*; public class Test2 extends JFrame{ JButton jb1,jb2,jb3,jb4,jb5; public static void main(String[] args) { // TODO ...
  • Java布局管理器

    千次阅读 2018-10-21 02:17:11
    一、布局管理器概念:各组件在容器的大小以及摆放位置。实现跨平台特性并获得动态布局的效果;Java组件布局布局管理器对象来管理;布局管理器会确定组件打大小和位置;在容器发生变化是做出动态调整。 二、布局...
  • 不使用布局管理器来布局控件类似于Android的absoluteLayout布局方式;也就是指定控件相对于窗体的显示位置 1。实例:import java.awt.Color; import java.awt.Font; import java.awt.event.ActionListener;import ...
  • Java页面布局设计计算器

    千次阅读 2017-11-09 10:46:40
    (一)源码演示package ... import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.Action
  • java 卡片布局

    千次阅读 2014-04-22 21:24:56
    卡片布局 就是卡片yi
  • Java Swing布局管理器

    万次阅读 多人点赞 2019-03-05 01:33:35
    引言 在使用 Swing 向容器...为了加快开发速度,Java 提供了一些布局管理器,它们可以将组件进行统一管理,这样开发人员就不需要考虑组件是否会重叠等问题。本文绍 Swing 提供的 6 种布局类型,所有布局都实现 La...
  • Java网格布局

    千次阅读 2018-04-14 21:20:00
    https://www.cnblogs.com/aipan/p/6409522.html
  • 在Android中用纯Java代码布局

    千次阅读 2019-07-21 17:18:19
    Android的界面布局主要有两种方式,一种是xml文件和Java代码结合的布局方式,一种是完全依靠Java代码布局。 两种布局方式的比较 对于第一种方式,大多数人都比较熟悉,在这里就不细说了。这种方式的好处包括代码的...
  • 在前面文章了解到Java对象实例是如何在Java创建的,下面我们详细了解Java普通对象创建后,在HotSpot虚拟机Java的内存布局是怎样的,可以分为3个区域:对象头(Header)、实例数据(Instance)和对齐填充...
  • java布局FlowLayout

    千次阅读 2016-03-18 14:34:48
    FlowLayout 布局应用代码段举例 1)设置FlowLayout 布局 JFrame fr=new JFrame( ); FlowLayout flow=new FlowLayout( ); fr.setLayout(flow); 上面的语句可以简化成: fr.setLayout(new FlowLayout())...
  • java布局中最为简单的便是FlowLayout流式布局,组件按照设置对齐方式从左向右排列,一行排满到下一行继续排列。让我们直接看一下代码:public Demo01() { setTitle("流式布局应用"); setBounds(200, ...
  • Java的GridBagLayout布局

    万次阅读 多人点赞 2017-09-22 21:34:53
    之所以一直写技术博客,是想把自己在学习的感悟写出来,希望对大家有所帮助,毕竟不同的思维碰撞往往会产生意想不到的火花。我个人在学习的过程往往是先学习官方的资料,再去网上阅读别人写的博客,这样往往会加深...
  • java布局 文字 图片

    2015-01-05 01:34:10
    我的面板设置的是流布局,我想要添加文字和图片,文字标签在第一排 图片显示在第二排,这个要怎么处理,用java实现
  • Java对象在内存布局

    千次阅读 2019-08-08 00:43:17
    在虚拟机,对象在内存的存储布局可分为三块:对象头、实例数据和对齐填充 1、对象头 对象头用于存储对象的元数据信息 对象头又可以分为两块内容:第一部分用于存储对象自身的运行时数据,如哈希码...
  • Java中的卡片布局(CardLayout)

    千次阅读 2019-07-19 14:47:42
    卡片布局可以通过点击窗口的按钮切换不同的面板。 package menu; import java.awt.CardLayout; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 370,581
精华内容 148,232
关键字:

java中的布局方式

java 订阅