java swing 布局_Java的Swing布局

java swing 布局_Java的Swing布局一 流布局 FlowLayout 默认地 自左向右逐个排列当一行排满时 自动排到下一行 setPreferred 控制每个控件的显示高度和宽度案例效果 MyFrame javapackages 布局 importjavax swing importjava awt publicclassM publicMyFram String

一、流布局FlowLayout

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

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

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

案例效果

ad9b7ed4fe6611bf18ecb03dbf6cc17e.png

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()

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

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

运行结果

a94f2fd2f1175637cc280fc0c8424bd6.png

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

运行结果

cde87748a0b08760daa3d45b5d2b3e31.png

c4beb5889523d8886acc7d66ad79bb0c.png

1f55b5d0312b529d0641a14b881948e4.png

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

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();

}

});

}

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/208782.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午10:47
下一篇 2026年3月19日 上午10:47


相关推荐

  • pyqt退出窗口_win10电脑软件闪退

    pyqt退出窗口_win10电脑软件闪退1.使用qtdesigner创建窗口界面这个都很熟悉了,就不重复说明了。(自行百度)2.pyqt将.ui文件转成python代码cd到.ui文件的目录,使用指令即可完成。得到一个py文件(一个类)红色部分是我自己加上去的,只是为了更好看懂代码,调试代码。3.运行pyqt生成的python代码,生成界面这里,需要添加几行代码!直接在Ui_Dialog类的py文件尾部添加如下代码:if__name__==”__main__”:app=QApplication(

    2022年8月28日
    6
  • wireshark抓包教程详解[通俗易懂]

    wireshark抓包教程详解[通俗易懂]wireshark抓包新手使用教程Wireshark是非常流行的网络封包分析软件,可以截取各种网络数据包,并显示数据包详细信息。常用于开发测试过程各种问题定位。本文主要内容包括:1、Wireshark软件下载和安装以及Wireshark主界面介绍。2、WireShark简单抓包示例。通过该例子学会怎么抓包以及如何简单查看分析数据包内容。3、Wireshark过滤器使用。过滤器包含两种类型,一种是抓包过滤器,就是抓取前设置过滤规则。另外一种是显示过滤器,就是在数据包分析时进行过…

    2025年9月30日
    4
  • Oracle DBA 路途遥远「建议收藏」

    Oracle DBA 路途遥远「建议收藏」好用的OracleDBA为什么这么难找? 这不但是很多CIO的痛,也是很多IT主管搅尽脑汁也解决不了的问题。可那么多从ORACLE培训班拿到OCP认证的人跑哪里去了呢? 小白是一个拥有OCP证照,且对数据库本身的架构、运作原理有一定了解的数据库管理员。原以为一切都没问题的,无奈小白刚一就任,就面临到替换公司数据库系统主机的问题。小白没有程序开发与主机系统管理等经验,小白是那种一毕

    2026年4月13日
    4
  • [生信]biomaRt 基因ID的转换

    [生信]biomaRt 基因ID的转换生信 基因 ID 的转换 Bioconductor 系列之 biomaRt 包的安装选择数据库三个主要函数 getBM getSequence getLDS 几个实用的例子一 对几个基因 symbol 注释它对应的 EnsembleID 和 ENTREZID 二 对刚才的那三个探针 ID 号进行多个内容注释 每个探针都对应着基因名已经染色体及起始终止坐标 三 对给定的基因 ID 号进行 GO 注释四 通过染色体及起始终止坐标来挑选基

    2026年3月18日
    2
  • 前端人员该怎么面试 经典Angular面试题有哪些[通俗易懂]

    前端人员该怎么面试 经典Angular面试题有哪些[通俗易懂]前端人员该怎么面试?经典Angular面试题有哪些?AngularJS是一个JavaScript框架,是一个以JavaScript编写的库。它可通过1、解释Angular2应用程序的生命周期hooks是什么?Angular2组件/指令具有生命周期事件,是由@angular/core管理的。@angular/core会创建组件,渲染它,创建并呈现它的后代。当@angular/core的数据绑定…

    2022年10月17日
    4
  • JavaScript获取当前日期

    JavaScript获取当前日期文章目录在 Javascript 中 通过 Date 方法可以获得当前日期 如下 getFullYear 获取当前年份 4 位 从 1970 年开始 getMonth 获取当前月份 0 11 0 代表 1 月 getDate 获取当前日 1 31 getDay 获取当前星期 X 0 6 0 代表星期日 首先我们需要 new 一个 date 对象 vard newDate d getFullYear 获取年 d getMont

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号