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

posted @   逆火狂飙  阅读(126)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2015-08-05 【Canvas与雷达】铝圈黑底绿环雷达扫描屏
2015-08-05 Webapp的display-name问题
2014-08-05 【Canvas与诗词】男儿何不带吴钩收取关山五十州
2014-08-05 【Canvas与艺术】绘制灰色橄榄枝环绕“Premium Quality”徽章
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东
点击右上角即可分享
微信分享提示