之前在进行Java的窗体开发时经常会把容器、面板与布局管理混淆,从而不能正确的使用这三种属性对窗体应用进行布局。所以今天在这里记录一下Java窗体中容器、面板及常见的四大布局管理器的用法。...面板中加入一个文本框,实现一个带有滚动条的文本框。...使用绝对布局时首先有一点需要注意:就是要先取消默认布局管理器,方法为: setLayout(null); //清空布局管理器,即取消原来的边界布局管理器 至于为什么要这样做,详细的解释可以看我的这篇文章...在使用绝对布局管理器时值得注意的就是:在使用绝对布局之前要调用setLayout(null)方法来告知编辑器,这里将不再使用默认的布局管理器。...在默认的情况下,组将在流布局管理器中都是以居中排列的,当然排列的顺序是可以改变的, FlowLayout类中的构造函数中有如下三种: Public FlowLayout(); Public FlowLayout
; import javax.swing.JFrame; import javax.swing.WindowConstants; /** * 1:流(FlowLayout)布局管理器是布局管理器中最基本的布局管理器...,流布局管理器在整个容器中 * 的布局正如其名,像流一样从左到右摆放组件,直到占据了这一行的所有空间,然后再向下移动一行。...* 默认情况下,组件在每一行上都是居中排列的,但是通过设置也可以更改组件在每一行上的排列位置 * * 2:FlowLayout类中具有三种构造方法 * alignment参数使用流布局管理器后组件在每一行的具体摆放位置...");//设置窗体标题 Container container=getContentPane();//初始化容器 //设置窗体使用流布局管理器,使组件右对齐,并且设置组件之间的水平间隔...,然后设置容器使用边界布局管理器 * 最后在循环中将按钮添加到容器中,并设置组件布局 *2:add()方法提供了在容器中添加组件的功能,并同时设置组件的摆放位置 * */
12.3.2 图标的使用 Swing中的图标可以放置在按钮、标签等组件上,用于描述组件的用途。...12.4.1 绝对布局 绝对布局,就是硬性指定组件在容器中的位置和大小,可以使用绝对坐标的方式来指定组件的位置。...使用绝对布局的步骤如下: 1)使用Container.setLayout(null)方法取消布局管理器; 2)使用Component.setBounds()方式设置每个组件的大小与位置。...默认情况下,组件在每一行都是居中排列的,可以通过设置更改组件的排列位置。...alignment参数表示使用流布局管理器后组件在每一行的具体摆放位置,可被赋值为: FlowLayout.LEFT = 0 FlowLayout.CENTER = 1 FlowLayout.RIGHT
记住这一点是很重要的,因为java.applet.Applet与JApplet不同,它使用FlowLayout的一个实例来布局组件。 ...如果修改例2-1的小应用程序,让该小应用程序试图设置它的布局管理器,则将弹出带有下面错误消息的异常信息: java.lang.Error:Do not use Test.setLayout()use...相比之下,Swing在小应用程序和应用程序的内容窗格中使用相同的布局管理器(即一个BorderLayout实例)。 ...Swing小应用程序和应用程序都使用BorderLayout布局管理器来布局它们的JRootPane实例,并且不允许显式地设置它们的布局管理器。...首先,我们要讨论为什么Swing是线程不安全的,然后介绍在Swing开发过程中单线程设计所带来的结果。 让我们面对这个事实,甚至在java中,开发多线程的应用程序也是不容易的。
大家好,又见面了,我是你们的朋友全栈君。 本实例使用随机数字生成5位抽奖号码,并显示在窗体的5个文本框中。当用户单击”开始”按钮时,将启动一个线程对象为5个文本框生成随机数字。...单击”抽奖”按钮时,线程对象停止运行,并且将准确的中奖号码显示在信息文本框中。 开发一个抽奖小工具的实例。 (1)自定义文本框组件,把5个生成随机数的文本框的公共属性抽象定义到该文本框。...NumField extends JTextField { private static final Font numfont = new Font("", Font.BOLD, 48);//定义文本框使用的字体...getContentPane().add(contentPanel); //添加内容面板到窗体 final JPanel numPanel = new JPanel(); //创建显示随机数的面板...flowLayout = new FlowLayout(); flowLayout.setHgap(25); controlPanel.setLayout(flowLayout); //设置面板布局
依次对应为:上北(NORTH)、下南(SOUTH)、左西(WEST)、右东(EAST),中(CENTER),如下图所示。 ?...依次注释掉东、西、南、北和中间位置添加按钮的语句,保留其它的的语句体会一下边框布局的特点。...如果想要更复杂的布局可以在东、西、南、北和中间位置添加中间容器,中间容器中再进行布局,并添加相应的组件,已达到复制补间的效果。 实例二:在中间位置中添加9个按钮。...add("West", new JButton("West")); //设置面板为流式布局居中显示,组件横、纵间距为5个像素 p.setLayout(new FlowLayout...(1, 5, 5)); //使用循环添加按钮,注意每次添加的按钮对象名称都是b //但按钮每次均是用new新生成的,所有代表不同的按钮对象。
1.绝对布局 绝对布局,就是可以硬性指定组件在容器中的位置和大小,使用绝对坐标来指定组件的位置与大小。...步骤如下: (1)使用Container.setLayout(null)方法取消布局管理器。 (2)使用Component.setBounds()方法设置每个组件的大小与位置。...FlowLayout中的第一个参数表示组件在每一行的具体摆放位置,可以有三种,值分别为: 0:左对齐 1:居中 2:右对齐 后面两个参数分别以像素为单位指定组件之间的水平间隔和垂直间隔。...container =jf.getContentPane(); jf.setLayout(new FlowLayout(1,10,10)); for(int i=0;i<10;i++) {...2.边界布局管理器 在默认不指定窗体布局的情况下,Swing组件的布局模式是边界布局管理器,如果在容器中只添加了一个标签组件,这个标签将被放置在窗体中间,而且整个组件占据窗体的所有空间,边界布局管理器还可以将容器划分为东
与早期计算机使用的命令行界面相比,图形界面对于用户来说更为简便易用。...GUI的广泛应用是当今计算机发展的重大成就之一,它极大地方便了非专业用户的使用人们从此不再需要死记硬背大量的命令,取而代之的是通过窗口、菜单、按键等方式来方便地进行操作。...Swing AWT使用 1....frame.setLayout(new FlowLayout()); //frame.setLayout(new FlowLayout(FlowLayout.LEFT)...public void actionPerformed(ActionEvent e) { System.out.println(e.getActionCommand());//获取按钮上的信息
在2023年5月20日这个特殊的日子里,我要用一段特别的代码来向你传递我对你的深情。这段代码由Java语言编写,以表白为主题,将带给你无法拒绝的浪漫体验。...✨简介 背景: "520"这个数字源于汉字的发音,它与"我爱你"这句表达爱意的中文词语相似。因此,"520"在中国文化中被赋予了浪漫和表白的含义。...社交媒体的流行:随着社交媒体的兴起,人们更容易在"520"这一天分享自己的爱情故事、浪漫的瞬间和表白的场景。这使得"520"成为了一个全民参与的浪漫日子。...Java编程作为表白方式 技术与情感的结合,通过使用Java编程作为表白方式,程序员们将技术与情感相结合。这不仅仅是展示他们的编程技能,更是表达他们对心爱的人的关心和爱意。...在代码背后,隐藏着深深的情感和真挚的情感表达。 ✨设计表白程序的思路 关于程序的设计思路这块我就不多说了,会的人看一下写的代码就能秒懂,不会的也不会在意程序的设计思路(这个建立的对象和写的程序)。
面向对象编程在计算机图形方面应用非常成功。 一个简单的GUI Java的GUI功能主要集中在awt和swing两个包中。awt是GUI底层包。swing包是高层的封装,更容易移植。...匿名类是Java的一种嵌套类,它是在使用new创建对象时,使用一个{}来直接包含类的定义。在匿名类定义中,我们不需要说明类名。...Content Pane的setLayout()方法决定了元素的布局(layout)方式。布局决定了元素的位置。最直接的布局是直接说明元素的坐标位置(像素)。...但GUI的设备尺寸可能差别很大,硬性规定像素位置将大大减小程序的可移植性。Swing提供了更高层的一些布局方法,比如FlowLayout下,元素将从左向右排列,在排满之后进入下一行。...更多的Java布局方式 图形元素 除了按钮之外,我们还可以在GUI中增加更多的元素,这些元素大都是JComponent的衍生类。
getLayer(Component c);//可以获得一个组件的Layer (五)设置布局 即组件在面板上的布局 容器/面板通过调用setLayout(布局对象)来设置布局 1:FlowLayout...布局:表示默认居中对齐,使用该布局方式的容器,用add函数向里面加组件,就会根据先后顺序从左向右排列,一行排完后就提行 使用该布局方式,组件自身的setSize将不会有用,要改变大小只能通过setPreferredSize...(DimensionpreferredSize) button.setPreferredSize(new Dimension(20,20))) 该布局方式的对齐方式可以更改,FlowLayout对象调用...setAlignment(int align);//使用该函数修改对齐方式,传入的参数是一个静态常量,FlowLayout.LEFT,FlowLayout.CENTER FlowLayout.RIGHT...且显示出来的组件将会占据该容器的所有空间 使用该种布局的容器在添加组件时 add(String s,Component c) s只是一个代号,方便以后显示这个组件时找到 cardlayout对象
而本章介绍的Java图形用户界面技术是基于Java SE 的 Swing,事实上它们在实际应用中使用不多,因此本章的内容只做了解。...Applet Applet称为Java小应用程序,Applet基础是AWT,但它主要嵌入到HTML代码中,由浏览器加载和运行,由于存在安全隐患和运行速度慢等问题,已经很少使用了。...JavaFX JavaFX是开发丰富互联网应用程序(Rich Internet Application,缩写RIA)的图形用户界面技术,JavaFX期望能够在桌面应用的开发领域与Adobe公司的AIR...在使用时通过继承事件所对应的适配器类,覆盖所需要的方法,无关方法不用实现。...g2d.setTransform(trans); 习题 编写窗体应用,窗体中安排2个按钮,按钮上面的标签分别为“改背景”、“关闭”,点击“改背景”按钮,用随机产生的颜色更改窗体的背景,点击“关闭”按钮可关闭窗体
正如你所看到的,按钮居中显示在一行中,当一行的空间不够时,将显示在新的一行上。 即使用户对框架进行缩放,这些按钮也会显示在面板的中央,如图9-7所示。...最后使用add方法将每个按钮添加到面板中。由于把按钮添加到面板中且没有改变默认的布局管理器,所以每个按钮的位置和大小都由FlowLayout管理器所控制。...面板只是用户界面设计者的一个组织机制。 前面讲过,JPanel类使用FlowLayout作为默认的布局管理器。对于JPanel来说,可以利用构造器为其提供不同的布局管理器。...当然,极少有应用程序具有与计算器的外表一样的布局。在实际应用中,小的网格(通常仅仅一行或者一列)在组织窗口的布局区域时比较有用。...例如,如果想有一行相同尺寸的按钮,那么就可以把按钮放置在一个面板里面,这个面板使用只有单行的网格布局进行管理。
由于操作系统存在差异,例如在windows上,我们要达到这样的效果,需要把该Lable组件的宽和高分别设置为100px,20px,但是在Linux操作系统上,可能需要把Lable组件的宽和高分别设置为120px...AWT 提供了多种布局管理器类,不同的布局管理器类在布局策略和算法上也不同,常用的有 FlowLayout、BorderLayout、GridLayout 和 CardLayout。...FlowLayout(int align) 使用指定的对齐方式及默认的垂直间距、水平间距创建 FlowLayout 布局管理器。...BorderLayout布局在面板上添加了五个按钮。...GUI 组件横向内部填充的大小,即 在该组件最小尺寸的基础上还需要增大多少. ipady 设置受该对象控制的 GUI 组件纵向内部填充的大小,即 在该组件最小尺寸的基础上还需要增大多少. insets
Contariner容器向其中添加组件 容器Container是一个类,实际上是Component的子类,因此容器本身也是一个组件,具有组件的所有性质,但它的主要内容是容纳其他组件和容器,在其可视区显示这些组件...容器的各种的组件的大小和位置是由容器的布局管理器进行控制。 其实就是获取内容面板,JFrame无法直接添加组件需要getContentPane()获取面板,然后再内容面板上添加组件。...因此平时添加的窗口组件都是添加到ContentPane里的, 通常都是分开写的 Container c=this.getContentPane();//初始化一个容器 c.add(****); //在容器上添加控件...或是: this.getContentPane().add(); 首先向innerWindow这个组件中添加元素,使用网格布局 innerWindow.setLayout(new GridLayout...this.getContentPane().setLayout(new BorderLayout()); // 关于BorderLayout()边界布局法,主要是按照东南西北中的顺序进行布局
例如,Panel可以容纳其他组件,但它不能独立存在,必须嵌入到其他容器中。Panel默认使用FlowLayout来管理其内部组件的布局。...在Container的继承体系中,各个容器类通过提供不同的布局管理方式和组件容纳能力,使得开发者能够灵活地构建出复杂的图形用户界面(GUI)应用。...图解 Winow是可以独立存在的顶级窗口,默认使用BorderLayout管理其内部组件布局; Panel可以容纳其他组件,但不能独立存在,它必须内嵌其他容器中使用,默认使用FlowLayout管理其内部组件布局...将参数设置为true表示窗口可见,将会显示在屏幕上。 整个代码的功能是创建一个带有标题栏的窗口容器,位置在屏幕的(100,100),大小为宽度500和高度300。...整个代码的功能是创建一个带有滚动条的ScrollPane容器,并在ScrollPane中添加一个TextField和一个Button组件。最后通过设置窗口可见,使窗口显示在屏幕上。
其实我学习java最根本的原因是:我是一个挺关注外在的人,虽然是个程序员,所以我很喜欢写出那些带有漂亮的界面的程序,因为C总是控制台,我不是很喜欢,在这份java代码合集中,我会记录自己学习Java界面化编程的点点滴滴...更新:因为C/C++是我主要使用语言,所有后来写界面主要用Qt写了,但我java也会继续学的。我只是给想学界面gui的同志一个思路。..."); public AppFrame() { setLayout(new FlowLayout()); getContentPane().add(in)...; getContentPane().add(btn); getContentPane().add(out); btn.addActionListener...this.panelLoginButton = new JPanel(); this.setLayout(new GridLayout(3, 1)); //网格式布局
方法名称 概述 getContentPane() 返回此窗体的 contentPane 对象 getDefaultCloseOperation() 返回用户在此窗体上单击“关闭”按钮时执行的操作 setContentPane...Container c=getContentPane(); //将lable标签组件添加到内容窗格上 c.add(lable); //设置本窗口是否可见 setVisible(true...public static void main(String[] args) { new Action(); } } 面板:(JPanel) 是一种中间层容器,它能容纳组件并将组件组合在一起,但它本身必须添加到其他容器中使用...*3、网格布局(GridLayout) *4、盒子布局(BoxLaYout) *5、空布局(null) */ jl.setLayout(new FlowLayout(FlowLayout.CENTER...布局管理器,将组件间的横向和纵向间隙都设置为20像素 jPanel.setLayout(new FlowLayout(FlowLayout.LEADING,20,20));
paint()方法实际上继承于java.awt。 如图 3....//容器 Java.awt.Panel//面板 Java.applet.Applet:默认的布局方式是FlowLayout Javax.swing.JApplet:默认的布局方式是BorderLayout...().add(button); add(button); } } 上面代码中,运行可以看到布局是BorderLayout,getContentpane是获取当前的JApplet的面板...,运行完后会发现布局变成了FlowLayout。...AppletContext接口 使用getAppletContext()获取当前applet的上下文环境。 使用showStatus()方法改变显示在浏览器状态栏上的信息。
领取专属 10元无门槛券
手把手带您无忧上云