一、流布局FlowLayout

默认地,自左向右逐个排列

当一行排满时,自动排到下一行

setPreferredSize():控制每个控件的显示高度和宽度

案例效果

MyFrame.java

packageswing布局;import javax.swing.*;import java.awt.*;public class MyFrame extendsJFrame {publicMyFrame(String title){super(title);

Container contentPane=getContentPane();//这里的参数设置的是对齐方式FlowLayout.LEFT左对齐

LayoutManager layout=newFlowLayout(FlowLayout.LEFT);

contentPane.setLayout(layout);

JLabel a1=new ColorfulLabel("1",Color.YELLOW);

JLabel a2=new ColorfulLabel("2",Color.GREEN);

JLabel a3=new ColorfulLabel("3",Color.LIGHT_GRAY);

JLabel a4=new ColorfulLabel("4",Color.CYAN);

JLabel a5=new ColorfulLabel("5",Color.WHITE);

contentPane.add(a1);

contentPane.add(a2);

contentPane.add(a3);

contentPane.add(a4);

contentPane.add(a5);//设置宽和高

a4.setPreferredSize(new Dimension(150,30));

}private static class ColorfulLabel extendsJLabel{publicColorfulLabel(String text,Color bgColor){super(text);

setOpaque(true);

setBackground(bgColor);

setPreferredSize(new Dimension(60,30));

setHorizontalAlignment(SwingConstants.CENTER);

}

}

}

SwingDemo.java

packageswing布局;import javax.swing.*;public classSwingDemo {private static voidCreateGUI(){

JFrame frame=new MyFrame("流布局");

frame.setSize(400,300);

frame.setVisible(true);

}public static voidmain(String[] args) {

SwingUtilities.invokeLater(newRunnable() {

@Overridepublic voidrun() {

CreateGUI();

}

});

}

}

二、边界布局BorderLayout

把容器分为上、下、左、右、中五个区域

setPreferredSize()

对于上下边界,可以调整高度

对于左右边界,可以调整宽度

运行结果

MyFrame2.java

packageswing布局;import javax.swing.*;import java.awt.*;public class MyFrame2 extendsJFrame {publicMyFrame2(String title){super(title);

Container contentPane=getContentPane();

contentPane.setLayout(newBorderLayout());

JLabel a1=new ColorfulLabel("1",Color.YELLOW);

JLabel a2=new ColorfulLabel("2",Color.GREEN);

JLabel a3=new ColorfulLabel("3",Color.LIGHT_GRAY);

JLabel a4=new ColorfulLabel("4",Color.CYAN);

JLabel a5=new ColorfulLabel("5",Color.WHITE);//五个区域

contentPane.add(a1,BorderLayout.PAGE_START);

contentPane.add(a2,BorderLayout.PAGE_END);

contentPane.add(a3,BorderLayout.LINE_START);

contentPane.add(a4,BorderLayout.LINE_END);

contentPane.add(a5,BorderLayout.CENTER);//设置宽和高

a1.setPreferredSize(new Dimension(0,80));

a3.setPreferredSize(new Dimension(100,0));

}private static class ColorfulLabel extendsJLabel{publicColorfulLabel(String text,Color bgColor){super(text);

setOpaque(true);

setBackground(bgColor);

setPreferredSize(new Dimension(60,30));

setHorizontalAlignment(SwingConstants.CENTER);

}

}

}

SwingDemo02.java

packageswing布局;import javax.swing.*;public classSwingDemo02 {private static voidCreateGUI(){

JFrame frame=new MyFrame2("边界布局");

frame.setSize(400,300);

frame.setVisible(true);

}public static voidmain(String[] args) {

SwingUtilities.invokeLater(newRunnable() {

@Overridepublic voidrun() {

CreateGUI();

}

});

}

}

三、卡片布局CardLayout

运行结果

通过切换下拉框的内容切换卡片

MyFrame3.java

packageswing布局;import javax.swing.*;import java.awt.*;importjava.awt.event.ItemEvent;importjava.awt.event.ItemListener;public class MyFrame3 extendsJFrame {

JPanel cards=newJPanel();

JComboBox options=new JComboBox<>();publicMyFrame3(String title){super(title);//内容面板

Container contentPane=getContentPane();

contentPane.setLayout(newBorderLayout());//向下拉框列表添加内容

options.addItem("第一个面板");

options.addItem("第二个面板");//将下拉框添加至边界布局的顶部

contentPane.add(options,BorderLayout.PAGE_START);//将卡片布局添加至边界布局的center

contentPane.add(cards,BorderLayout.CENTER);//创建第一个面板

JPanel p1=newJPanel();

p1.add(new JButton("红"));

p1.add(new JButton("绿"));

p1.add(new JButton("蓝"));//创建第二个面板

JPanel p2=newJPanel();

p2.add(new JLabel("输入"));

p2.add(new JTextField(20));//将这两个面板添加到卡片布局中,其中的第二个参数为布局的名称,方便调用

cards.setLayout(newCardLayout());

cards.add(p1,"buttons");

cards.add(p2,"text");//添加事件响应

options.addItemListener(newItemListener() {

@Overridepublic voiditemStateChanged(ItemEvent e) {

ItemChange();

}

});

}private voidItemChange() {

CardLayout cardLayout=(CardLayout)cards.getLayout();int index=options.getSelectedIndex();

System.out.println(index);if (index==0){

cardLayout.show(cards,"buttons");

}else if(index==1){

cardLayout.show(cards,"text");

}

}

}

SwingDemo03.java

packageswing布局;import javax.swing.*;public classSwingDemo03 {private static voidCreateGUI(){

JFrame frame=new MyFrame3("卡片布局");

frame.setSize(400,300);

frame.setVisible(true);

}public static voidmain(String[] args) {

SwingUtilities.invokeLater(newRunnable() {

@Overridepublic voidrun() {

CreateGUI();

}

});

}

}

java swing 布局_Java的Swing布局相关推荐

  1. java group布局_Java的swing.GroupLayout布局管理器的使用方法和实例

    /** * @author :陶伟基 ,微博:http://weibo.com/taoandtao * @date :2012/12/10 * @place:广州大学华软软件学院 */ importj ...

  2. java swing 示例_JAVA简单Swing图形界面应用演示样例

    JAVA简单Swing图形界面应用演示样例 package org.rui.hello; import javax.swing.JFrame; /** * 简单的swing窗体 * @author l ...

  3. java魔兽猎人_Java基于Swing实现的打猎射击游戏代码

    package Game; import static java.lang.Math.random; import java.awt.*; import java.awt.event.*; impor ...

  4. java国际象棋棋牌_java使用swing绘制国际象棋棋盘

    本文实例为大家分享了java使用swing绘制国际象棋棋盘的具体代码,供大家参考,具体内容如下 1.完整代码 import java.awt.Color; import java.awt.Point; ...

  5. 用java画乌龟_java用swing画可以行走的乌龟

    代码如下: import java.awt.Color; import java.awt.Graphics; import java.awt.event.KeyEvent; import java.a ...

  6. java group布局_Java 的swing.GroupLayout布局管理器的使用方法和实例

    GroupLayout 是一个 LayoutManager,它将组件按层次分组,以决定它们在 Container 中的位置.GroupLayout 主要供生成器使用,但也可以手工编码.分组由 Grou ...

  7. java事件编程_java基础 ---Swing事件编程

    java基础 ---Swing事件编程 GUI的设计就剩个菜单组建,这个组件也是想当于容器套容器,在设计方面没有什么难度,主要是一些事件的响应.还有另一种事件的监听方式,也就是适配器监听方法. 1.菜 ...

  8. java timer 动画_java – 使用Swing动画进行计时

    Jonas已经给出了答案(使用Swing计时器),但是解释为什么你没有看到动画可能是有用的,以及为什么计时器是这个问题的最佳解决方案. 为什么我看不到不同的重绘 当您调用JComponent #rep ...

  9. java null布局_Java Swing 绝对布局管理方法,null布局

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import java.awt.Container; import java.awt.Dimension; import java.awt.Rectang ...

最新文章

  1. [Oracle]为何Archivelog 没有马上被删除
  2. Science新研究颠覆认知,有望一举解决困扰器官移植60余年问题,网友:生物课本得改了...
  3. RedHat6.5网卡问题总结
  4. 基于Maven管理的Mapreduce程序下载依赖包到LIB目录
  5. 一步步编写操作系统 11 实模式下程序分段的原因
  6. 一个基于STM32实现的多组分气体分析仪项目
  7. 通过zabbix获取数据库连接的信息及部分扩展
  8. java基于ssm+mysql的宠物店管理系统 计算机毕业设计
  9. 应用ruby打造个性化的有道单词本 (一)
  10. 责任链模式实现及在Filter中的应用
  11. java一个字符几个字节_Java 语言中一个字符占几个字节?
  12. python画线段代码_python画线代码
  13. 工厂模式与抽象工厂模式
  14. 是选择决定了你的一生,而不是努力
  15. 临床执业助理医师(综合练习)题库【5】
  16. 电脑BIOS密码的设置与修改方法
  17. 情人节程序员用HTML网页表白【爱心表白】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  18. 13.DoS防御----BeEF浏览器渗透----暴力破解之美杜莎---DNS指南
  19. mex matlab混编,mex混编后运行总是导致matlab崩溃是什么情况?
  20. Linux下屏保程序

热门文章

  1. easypoi导入复杂表头Excel
  2. iOS底层探索二(OC 中 alloc 方法 初探)
  3. 0228 我的潘多拉
  4. App免填邀请码安装如何实现?快速读懂免填邀请码
  5. 0基础如何自学Java(从入门到精通)
  6. there.js3d模型动画交互
  7. java哪些超类_java – 超类常用方法实现
  8. Shell之字符串大小写转换
  9. Java如何通过坐标值对一张PDF进行局部切割
  10. c++ ----to_string、stoi()、atoi()