Swing中GridBagLayout效果展示

GridBagLayout可以算是Swing里最好理解,最方便控制的布局,下面代码展示了一个GUI,留待日后备用。

效果:

代码:

package com.hy;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.Toolkit;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

public class FolderGui {
    public static void main(String[] args) {
        //-- 创建frame及进行相关测试
        JFrame frame=new JFrame("Pictures Show 图片幻灯展示");
        
        // 点击关闭按钮退出
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        // 关闭最大化功能
        //frame.setResizable(false);
        
        // 设置宽高
        frame.setSize(420, 150);
        
        // 取得屏幕宽度
        double width = Toolkit.getDefaultToolkit().getScreenSize().getWidth();
        
        // 取得屏幕高度
        double height = Toolkit.getDefaultToolkit().getScreenSize().getHeight();
        
        // 设置窗体居中显示
        frame.setLocation( (int) (width - frame.getWidth()) / 2,
        (int) (height - frame.getHeight()) / 2);
        
        //-- 添加组件
        JPanel panel=new JPanel();// 新建容器面板
        panel.setBorder(new EmptyBorder(5,5,5,5));// 设置边界
        panel.setLayout(new GridBagLayout());// 设置布局
        
        GridBagConstraints c=new GridBagConstraints();        
        c.fill=GridBagConstraints.HORIZONTAL;// 填充模式为水平充满
        
        c.weightx=0.0;// 权重0,表示不占用多余空间
        c.gridx=0;
        c.gridy=0;// 占左上
        panel.add(new JLabel("图片所在目录:"),c);
        
        c.weightx=1.0;// 权重1,多余空间全归属到此
        c.gridx=1;
        c.gridy=0;// 占右上
        c.insets=new Insets(0,5,0,0);// 左边填充五个像素
        panel.add(new JTextField("",15),c);
        
        c.weightx=0.0;
        c.gridx=0;
        c.gridy=1;// 占中左
        c.insets=new Insets(10,0,0,0);// 上边填充五个像素
        panel.add(new JLabel("图片展示间隔:"),c);
        
        c.weightx=1.0;
        c.gridx=1;
        c.gridy=1;// 占中右
        c.insets=new Insets(0,5,0,0);
        panel.add(new JTextField("",15),c);
        
        c.weightx=0.0;
        c.gridx=0;
        c.gridy=2;// 占下部
        c.insets=new Insets(5,0,0,0);
        c.gridwidth=2;// 跨两格
        c.fill=GridBagConstraints.CENTER;// 居中而不填充,取默认大小
        panel.add(new JButton("开始展示图片"),c);
        
        frame.add(panel);
        
        // 显示frame
        frame.setVisible(true);        
    }
}

END

原文地址:https://www.cnblogs.com/heyang78/p/15102653.html