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