Java Swing 布局管理器

java--Swing 组件的使用 布局管理器 GUI (Graphics User Interface)图形用户界面 Awt抽象窗口工具栏(Abstract Window Toolkit) Swing 解决了lcd(本地化)问题。 Swt   IBM为swing比较消耗内存创建的一个新的GUI库 Jface 在Swt基础上又创建一个更易用,功能强大的图形包JFace JFrame是一个顶层容器类,(可以添加其他swing组建的类 阅读详情
package javagui.ui;

import java.awt.Color;
import java.awt.Image;

import javax.swing.ImageIcon;



public class GUIMain {

	public static void main(String[] args) {
		
		/*Window1 win1=new Window1();
		win1.setSize(400, 300);
		win1.Init();
		win1.setIconImage(null);
		
		String path= ClassLoader.getSystemResource("res/icon.png").getPath();
		
		Image img=null;
		
		ImageIcon ic=new ImageIcon(path);
		img= ic.getImage();
		
		win1.setIconImage(img);
		//win1.getContentPane().setBackground(Color.red);
		//win1.setBackground(Color.red);
		win1.Show();
		*/
		
		Window3 win3=new Window3();
		win3.Init();
		win3.setSize(400, 300);
		win3.Show();
		
		
	}

}

package javagui.ui;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.LayoutManager;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

/**
 * 流式布局
 * 组件在容器中按加入顺序逐行定位,行内从左到右,一行满后换行,默认对齐方式为居中对齐
 * @author dream
 *
 */
public class Window1 extends JFrame implements WindowListener,MouseListener {
	private JLabel label;
	private JButton button1;
	private JButton button2;
	private JButton button3;
	
	public void Init(){
		
		//按钮
		button1=new JButton();
		button1.setText("按钮1");
		button1.setSize(100, 50);
		
		//按钮
		button2=new JButton();
		button2.setText("按钮2");
		
		//按钮
		button3=new JButton();
		button3.setText("按钮3");
		
		
		this.getContentPane().setLayout(new FlowLayout());
		
		//添加组件
		this.getContentPane().add(button1);
		this.getContentPane().add(button2);
		
		JPanel jpanel=new JPanel(new FlowLayout(FlowLayout.LEFT,10,10));
		jpanel.setBackground(Color.red);
		
		this.getContentPane().add(jpanel);
		jpanel.setPreferredSize(new Dimension(200, 100));
		jpanel.add(button3);
		
		this.addWindowListener(this);
		this.setResizable(true);
	}
	
	public void Show(){
		this.setVisible(true);
	}

	
	/**
	 * 窗体激活时执行
	 */
	public void windowActivated(WindowEvent arg0) {
		System.out.println("windowActivated");
	}

	/**
	 * 窗体已关闭时执行
	 */
	public void windowClosed(WindowEvent arg0) {
		System.out.println("windowClosed");
	}

	/**
	 * 窗体关闭前执行
	 */
	public void windowClosing(WindowEvent arg0) {
		System.out.println("windowClosing");
		this.dispose();
		System.exit(0);
	}

	/**
	 * 窗体由激活转为未激活时执行(也就是不是当前焦点窗口)
	 */
	public void windowDeactivated(WindowEvent arg0) {
		System.out.println("windowDeactivated");
	}

	public void windowDeiconified(WindowEvent arg0) {
		System.out.println("windowDeiconified");
		
	}

	public void windowIconified(WindowEvent arg0) {
		System.out.println("windowIconified");
	}
	/**
	 * 窗体显示前执行
	 */
	public void windowOpened(WindowEvent arg0) {
		System.out.println("windowOpened");
	}

	public void mouseClicked(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	public void mouseEntered(MouseEvent arg0) {
		System.out.println("mouseEntered");
		
	}

	public void mouseExited(MouseEvent arg0) {
		System.out.println("mouseExited");
	}

	public void mousePressed(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	public void mouseReleased(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}
}

package javagui.ui;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Panel;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

/**
 * 边界布局
 * 是Window及子类(Frame,Dialog)的默认布局管理器。
组件布局效果:将整个容器分为:东,西,南,北,中(East,West,South,North,Center)五部分,
组件只能被添加到指定的区域,默认加的Center区域,每个区域只能加入一个组件。东,西为垂直缩放,南,北为水平缩放。
 * @author dream
 *
 */
public class Window2 extends JFrame {
	private JButton btn1;
	private JButton btn2;
	private JButton btn3;
	private JButton btn4;
	private JButton btn5;
	private JPanel panel;
	private JLabel label;
	
	public void Init(){
		
		Container jpanel=this.getContentPane();
		
		btn1=new JButton();
		btn1.setPreferredSize(new Dimension(100, 50));
		btn1.setText("Button1");
		jpanel.add(btn1,BorderLayout.NORTH);
		
		
		btn2=new JButton();
		btn2.setText("Button2");
		jpanel.add(btn2,BorderLayout.SOUTH);
		
		btn3=new JButton();
		btn3.setText("Button3");
		jpanel.add(btn3,BorderLayout.WEST);
		
		btn4=new JButton();
		btn4.setText("Button4");
		jpanel.add(btn4,BorderLayout.EAST);
		
		btn5=new JButton();
		btn5.setText("Button5");
		btn5.setSize(100,50);
		panel=new JPanel();
		panel.setBackground(Color.green);
		panel.add(btn5);
		
		label=new JLabel();
		label.setText("边界布局中嵌套Panel流式布局");
		panel.add(label);
		
		
		panel.setLayout(new FlowLayout(FlowLayout.LEFT));
		panel.setPreferredSize(new Dimension(200, 100));
		
		
		
		jpanel.add(panel,BorderLayout.EAST);
		
		
		
		
	}
	
	public void Show(){
		this.setVisible(true);
	}
}

package javagui.ui;

import java.awt.Container;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
/**
 * 网格布局GridLayout
 * 布局效果:将容器划分为规则的矩形网格,每个单元格大小相等.
Public GridLayout();默认设置,所有组件在同一行中,各占一列.
Public GridLayout(int rows,int cols): 指定行数和列数.
Public GridLayout(int rows,int cols, int h,int v):指定行数,列数和垂直,水平间距.
 * @author dream
 *
 */
public class Window3 extends JFrame {
	private JButton btn1;
	private JButton btn2;
	private JButton btn3;
	private JButton btn4;
	
	public void Init(){
		Container c=this.getContentPane();
		c.setLayout(new GridLayout(2, 2));
		
		btn1=new JButton();
		btn1.setText("Button1");
		c.add(btn1);
		
		btn2=new JButton();
		btn2.setText("Button2");
		c.add(btn2);
		
		btn3=new JButton();
		btn3.setText("Button3");
		c.add(btn3);
		
		btn4=new JButton();
		btn4.setText("Button4");
		c.add(btn4);
		
		
	}
	
	public void Show(){
		this.setVisible(true);
	}
}

Java Swing 之流式布局管理器 流式布局管理器是面板的默认布局管理, 阅读详情

相关推荐

12、探索Java Swing中的布局管理器

本文深入探讨了Java Swing中的各种布局管理器,包括FlowLayout、BorderLayout、GridLayout、GridBagLayout、GroupLayout和BoxLayout等。通过详细解释和示例代码,帮助开发者理解如何选择和使用合适的布局管理器来创建灵活美观的用户界面。此外,还介绍了自定义布局管理器的实现方法以及布局管理的最佳实践,为实际开发提供指导。

ik678901的博客 117

Swing中的getContentPane()方法与add()方法

在JDK1.5版本之前,我们在给顶级容器JFrame添加内容的时候,必须先获取内容面板,再添加内容。如下: package com.AWT; import javax.swing.*; import java.awt.*; public class awtTest extends JFrame { JButton jb1,jb2,jb3,jb4,jb5=null; awtT...

家里没矿 9907

深入探索Java Swing布局管理器

本文还有配套的精品资源,点击获取 简介:Java Swing是一个用于创建GUI的库,提供了丰富的组件和布局管理器,无需依赖本地平台。本实例深入探讨了Java Swing内置的多种布局管理器,包括FlowLayout、BorderLayout、GridLayout、CardLayout和GroupLayout,以及它们在实际开发中的应用。通过结合使用这些布局管理器并嵌套容器...

weixin_36299472的博客 1211

关于setContentPane()和getContentPane()的应用

关于setContentPane()和getContentPane()的应用------摘要:java_流子 Fab.19 2006-------- 我们可以在 JFrame 对象中添加 AWT 或者 Swing 组件。但是,虽然它有 add 方法,却不能直接用于添加组件,否则会抛出异常——不信就试试。造成这个现象的原因只有一个解释:JFrame 不是一个容器,它只是一个框架。那么,应该怎么添加组

abang8114的专栏 1万+

用Python实现四叉树(quad tree)

import numpy as np #正方形类 class square: #lx、ly为左上角坐标(x对应行号,y对应列号),rx、ry为右下角坐标 def __init__(self,lx,ly,rx,ry): self.lx=lx self.ly=ly self.rx=rx self.ry=ry #检查该矩阵中是否满足条件 #参数:原矩阵,阈值 #返回值:布尔类型 def check(s

weixin_44164489的博客 5868

BUSCO评估基因组的完整性

因为数据库收集的时候找的就是在不同的物种间都是单拷贝的基因,所以说在评估的物种里面应该也是单拷贝的状态才对。基因组层面评估:先去基因组上预测这些基因,再去做评估,如果说给他是一个注释好的基因集,这个时候提供的是一个蛋白集合,它就直接是去进行同源搜索,再去评估,看BUSCO数据库里面的这些单拷贝基因有或者无;首先,tblastn也是同源搜索,同源搜索之后,去对转录本进行读码框预测,预测完的结果还是去进行hmmsearch的搜索(hmmsearch是做蛋白质结构域搜索的),最终拿到BUSCO评估结果。

qq_64400864的博客 2959

this.getContentPane().setLayout(null);是什么意思

获取窗口的内容窗口,再设置内容窗口的布局是空布局(就是你自己想怎么放组件就怎么放组件)。 组件都放在内容窗口里,当然1.5以后简化 了 ,用add可以直接添加组件到内容窗口。...

weixin_39793752的博客 6134

python k线顶分型_【缠论】分型、笔的定义及其程序化

K线包含关系处理和分型的定义如果一个K线的高低点全在另一K线的范围里,称之为包含关系。针对这种K线,需要进行一些处理,去除包含关系,处理方法:向上时,把两K线的高点当高点,而两K线低点中的较高者当成低点;反之,当向下时,把两K线的低点当低点,而两K线高点中的较低者当成高点,这样就把两K线合并成一新的K线。经过这样的处理,所有K线图都可以处理成没有包含关系的图形。两K线的包含关系,可以分成四种:1)...

weixin_39717152的博客 2824

Swing中的getContentPane()方法

http://www.java3z.com/cwbwebhome/article/article2/2359.html     在过去的J2SE版本中,部件(components)不能直接添加到最高级(top level)的Swing容器,这些容器包括:JFrame, JDialog, JWindow, JApplet和JInternalFrame. 例如现在有一个JFrame的i

wuxinliulei的专栏 2万+

MATLAB点云处理(八):为点云添加高斯噪声

本文对如何借助MATLAB,为点云添加高斯噪声做出了说明,并给出实现代码。

孙悟空 2844

【读代码】从claude skills到superpowers项目

最近claude skills成了大热门,今天一起看下GitHub 上的开源技能框架,他将“工作流”封装为“技能” (Skills)。本文尝试剖析该项目的技能粒度定义、多技能关联架构、应用逻辑等。与传统的 Function Calling 不同,Superpowers 中的 Skill 定义粒度并非“原子操作”,而是**“认知模式” (Cognitive Mode) 或“工作阶段”**。

kakaZhui的博客 1920

Java Swing布局管理器

引言 在使用 Swing 向容器添加组件时,需要考虑组件的位置和大小。如果不使用布局管理器,则需要先在纸上画好各个组件的位置并计算组件间的距离,再向容器中添加。这样虽然能够灵活控制组件的位置,实现却非常麻烦。 为了加快开发速度,Java 提供了一些布局管理器,它们可以将组件进行统一管理,这样开发人员就不需要考虑组件是否会重叠等问题。本文绍 Swing 提供的 6 种布局类型,所有布局都实现 La...

书香水墨 1万+

北斗导航 | ChatGPT之RTK、RTD、ARAIM算法原理及程序代码(ChatGPT看你怎么回答,附部分代码)

ChatGPT之RTK、RTD、ARAIM算法原理及程序代码

尘世冰封的专栏 3678

Java Swing 布局管理器详细使用指南

十种常用布局管理器

A_user_id_of_KP的博客 825

【Bug已解决】NCCL timeout for validation 解决方案

训练用多卡 DDP / FSDP 正常,但一到或者进程直接 hang 在 eval 的某个集合通信上。最迷惑的是:训练阶段(有集合通信)完全正常,偏偏 eval 阶段(看起来更轻量)超时。因为 eval 阶段某些 rank 没参与 collective,导致参与的那部分 rank 永远等不到同伴。

一键难忘的博客 142

基于STM32L4XX、HAL库的E180-ZG120B ZigBee模块驱动程序设计

/ 频率: 470MHz, SF7, BW125kHz, CR4/5, 功率14dBm。// 检查是否收到完整响应(根据实际情况调整)// 每5秒发送一次。PB0 <---> AUX (可选,用于状态检测)// 实际发送命令可能需要根据模块AT指令集调整。PC13 <---> RESET (可选)// 处理接收到的数据。// 缓冲区满,从头开始。// 其他必要的HAL库初始化代码...// 初始化E180模块。// 启动UART接收。// 如果需要等待响应。// 配置LoRa参数。

zhusl6688的博客 380

JAVA Swing常见的布局管理器

JAVA Swing常见的布局管理器1.GroupLayoutGroupLayout是以组为单位来管理布局的,把多个组件划分到不容的组,再根据各个组相对于水平轴和垂直轴的排列方式来进行组的管理。使用GroupLayout布局管理器进行布局 import java.awt.Container; import java.awt.HeadlessException; import javax.swi

Easygoing 2061

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【idea插件开发】Java Swing 中主要的布局管理器

Java Swing提供的布局管理器

weixin_44537512的博客 1286

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Swing学习03:Java Swing布局管理器(详解版)

在使用 Swing 向容器添加组件时,需要考虑组件的位置和大小。如果不使用布局管理器,则需要先在纸上画好各个组件的位置并计算组件间的距离,再向容器中添加。这样虽然能够灵活控制组件的位置,实现却非常麻烦。 为了加快开发速度,Java 提供了一些布局管理器,它们可以将组件进行统一管理,这样开发人员就不需要考虑组件是否会重叠等问题。本节介绍 Swing 提供的 6 种布局类型,所有布局都实现 Layou...

一条会编程的鱼 2170

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

java中的swing组件、主要三大布局管理器的应用

二、布局管理器--介绍 1、概念:组件在容器(比如JFrame)中的位置和大小是由布局管理器来决定的。所有的容器都会使用一个布局管理器,通过它来自动进行组件的布局管理。 2、种类:java共提供了五种布局管理器:流式布局管理器(FlowLayout)、边界布局管理器(BorderLayout)、网格布局管理器(GridLayout)、卡片布局管理器(CardLayout)、网格包布局管理器(GridBagLayout)。其中前三种是最常见的布局管理器。

zyj0813的博客 2万+

Java-Swing布局管理器你知多少?

Java-Swing常用布局管理器 应用布局管理器都属于相对布局,各组件位置可随界面大小而相应改变,不变的只是其相对位置,布局管理器比较难以控制,一般只在界面大小需要改是才用,但即使这样,为了操作方便,也只是在大的模块下用布局管理器,在一些小的模块下还是用绝对布局。在一些没要求界面大小改变的窗口,一般采用绝对布局比较容易,但对于后期的修改来说比较麻烦。 5.1、 BorderLayout 这种布局...

小彭生活 470

java布局管理器有那些_Java Swing布局管理器(详解版)

在使用 Swing 向容器添加组件时,需要考虑组件的位置和大小。如果不使用布局管理器,则需要先在纸上画好各个组件的位置并计算组件间的距离,再向容器中添加。这样虽然能够灵活控制组件的位置,实现却非常麻烦。为了加快开发速度,Java 提供了一些布局管理器,它们可以将组件进行统一管理,这样开发人员就不需要考虑组件是否会重叠等问题。本节介绍 Swing 提供的 6 种布局类型,所有布局都实现 Layout...

weixin_39692045的博客 1029

Java程序设计——Swing UI 布局管理器(四)

目录 布局管理器4.1.FlowLayout4.2.BorderLayout4.3.GridLayout4.4.CardLayout4.5.BoxLayout4.6.NULL FlowLayout(); FlowLayout(int align); //align一般取值有:CENTER、LEFT、RIGHT FlowLayout(int align, int hga

Mr_John 3716

Java Swing 5种布局管理器基本示例

在Java Swing中,常用的布局管理器有BorderLayout、FlowLayout、GridLayout、GridBagLayout和BoxLayout;

bcbobo21cn的专栏 888

第二十章《Java Swing》第3节:布局管理器

布局管理器能够设置内容面板上组件的排列方式,也就是说内容面板被设置了某种布局管理器之后就能实现组件按照特定规律排列。常用的布局管理有:流式布局管理器、边框布局管理器、卡片布局管理器、增强网格布局管理器等。本小节将详细讲解布局管理器的相关知识。

穆哥学堂--Java学习园地 1888
上一篇: Java 加载Jar包
下一篇: Python库应用之Json
IT回忆录
博客等级 码龄16年 42粉丝 100原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值