• Java 图形界面


    Container(容器)

        JWindow(窗口)

            JFrame(窗体)

            JDialog(对话框)

        JPanel(面板)

        JScroolPanel(滚动面板)

    为容器设置布局 container.setLayout(new layoutManager())

    常用的几种Layout

    1.FlowLayout(流布局)

    从左到右或者从右到左依次排列,如果容纳不了就换行

    构造方法:FlowLayout(int align,int hgap,int vgap)

    align:对齐方式

    hgap,vgap:控件之间,控件与布局的水平和垂直间距

    2.BorderLayout(边框布局,默认使用该布局)

    将容器分为五个部分:东,西,南,北,中间 分别用EAST,WEST,SOUTH,NORTH,CENTER表示

    像容器添加控件时可以指定方位,如不指定默认在中间

    3.GridLayout(表格布局)

    每个表格大小相同,按照从左到右从上到下添加组件

    添加到布局中的组件自动缩放到表格大小

    4.GridBagLayout(框架布局)

    可以想象为在上面的表格布局中将方格划分为不同的部分

    需要设置的属性:

    weightx:x方向所占权重,默认为0,同一行上所有组件的权重比相当于宽度之比

    weighty:y方向所占权重,默认为0,同一列上所有组件的权重比相当于高度之比

    gridheigth,grid

    相当于当前单元所代表的列数和行数

    GridBagConstraints.REMAINDER 指定组件的显示区域,该区域的范围是从 gridx 到该行(针对 gridwidth)中的最后一个单元,或者从 gridy 到该列(针对 gridheight)中的最后一个单元。

    GridBagConstraints.RELATIVE 指定组件的显示区域,该区域的范围是从 gridx 到其所在行(针对 gridwidth)的倒数第二个单元,或者从 gridy 到其所在列(针对 gridheight)的倒数第二个单元。

    gridx,gridy: 指定包含组件显示区域的前导角的单元,对于水平的从左到右的布局,组件的前导角是其左上角。对于水平的从右到左的布局,组件的前导角是其右上角。使用 GridBagConstraints.RELATIVE(默认值),指定会将组件直接放置在之前刚添加到容器中的组件的后面。

    anchor:对其方式,默认为绝对位置center,还有相对与方向和相对与基线

    ipadx,ipady:内部填充,组件的首选大小加上该值等于实际显示的大小

    insect: 外部填充,可以用来设置组件件的间距

    例子:

    代码:

    package com.xiao.helloswing;
    
    import java.awt.Color;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    
    public class PracticeGridBagLayout extends JFrame {
    
        private static final long serialVersionUID = 3415154134L;
        private JPanel panel = new JPanel();
        private JPanel panel1 = new JPanel();
        private JPanel panel2 = new JPanel();
        private JPanel panel3 = new JPanel();
        private JPanel panel4 = new JPanel();
        private JPanel panel5 = new JPanel();
        private GridBagLayout layout = new GridBagLayout();
        
        
        public PracticeGridBagLayout() {
            super("test");
            panel.setLayout(layout);
            add(panel);
            panel1.setBackground(Color.red);
            panel2.setBackground(Color.blue);
            panel3.setBackground(Color.black);
            panel4.setBackground(Color.orange);
            panel5.setBackground(Color.green);//中间的绿色不能省去,不知道为嘛
            setContraint();
            
            
            setSize(500, 500);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setVisible(true);
            
            
            
        }
        
        private void setContraint() {
            layout.setConstraints(panel1, 
                    new GridBagConstraints(0, 0, 2, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                            new Insets(0, 0, 0, 0), 0, 0));
            panel.add(panel1);
            
            layout.setConstraints(panel2, 
                    new GridBagConstraints(2, 0, 1, 2, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                            new Insets(0, 0, 0, 0), 0, 0));
            panel.add(panel2);
            
            layout.setConstraints(panel3, 
                    new GridBagConstraints(0, 1, 1, 2, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                            new Insets(0, 0, 0, 0), 0, 0));
            panel.add(panel3);
            
            
            layout.setConstraints(panel4, 
                    new GridBagConstraints(1, 2, 2, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                            new Insets(0, 0, 0, 0), 0, 0));
            panel.add(panel4);
            
            layout.setConstraints(panel5, 
                    new GridBagConstraints(1, 1, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                            new Insets(0, 0, 0, 0), 0, 0));
            panel.add(panel5);
        }
        
    }

    5.CardLayout(卡片布局)

    将组件排序,有:第一个,下一个,上一个,最后一个四种操作

    6.BoxLayout(箱式布局)

    可以横向或者纵向排列组件

    并且可以同过几个Box不可值视组件来设置组件间的间距

    7.null(无布局)

  • 相关阅读:
    【LeetCode】17. Letter Combinations of a Phone Number
    【LeetCode】16. 3Sum Closest
    【LeetCode】15. 3Sum 三个数和为0
    【LeetCode】14. Longest Common Prefix 最长前缀子串
    【LeetCode】13. Roman to Integer 罗马数字转整数
    【LeetCode】12. Integer to Roman 整型数转罗马数
    【LeetCode】11. Container With Most Water
    【LeetCode】10. Regular Expression Matching
    Models of good programmer
    RSA Algorithm
  • 原文地址:https://www.cnblogs.com/xiao-ji-xiang/p/9825419.html
Copyright © 2020-2023  润新知