Java布局管理器使用方法探讨

java自定义布局管理器_Java中GUI—布局管理器 在Java的GUI中布局是用来为容器划分区域的,这就决定了控件在容器中的摆放位置,从而为容器规划好分区方式常用的布局管理器有7中:FlowLayout、BorderLayout、GridLayout、BoxLayout、GridBagLayout、CardLayout、在一些顶层容器和面板中,已经规定了默认的布局管理器:javax.swing.JApplet——BorderLayoutjavax.... 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>  很多初学者在用Java布局器自动布局画界面时,经常遇见不知道如何定义区域大小或按钮之间的距离等问题。我写过一篇《实现JAVA手动布局中各个组件能随窗口变化的方法》的文章,有读者反映算坐标不好算,问能不能用布局器实现文章中的界面。其实自动布局也可以解决定义区域大小或按钮之间的距离等问题,只是没有手动布局那么灵活。下面我就举一个例子。   首先,建一个frame文件(Application应用程序),在Design中将this中的layout设置为BorderLayout。   第二,在组件盘内点选Swing Container页签,选取Jpanel图标,在this中上方拖拽一块区域,布局器会自动调整位置与大小;同样的方法在中下方也拖拽一块区域;在Swing Container页签,选取jScrollPane图标,将jScrollPane在中间拖拽一块区域。拖拽的顺序一定要先上后下再中间。为了方便区分,在Properties的background中,将上方的Jpanel1区域设置为红色,下方的Jpanel2区域设置为橙色,中间的jScrollPane1为粉红色。将Jpanel1和Jpanel2的layout设置为flowLayout(必须要手动设置,不要采用默认值)。   第三,在Jpanel中放入一个Jlable标题栏,JTextField1文本框和Jbutton按钮,在组件盘内点选Swing 页签,选取JLable图标在Jpanel1的中画一个标题栏,将text改为“请输入查询条件”,再选取JtextField在Jpanel1中画一个文本框,将text改为空,最后选取Jbutton在Jpanel1中再画一个按钮将text改为“查询”。画完后他们都是在中间,而且大小固定,这时点选Jpanel的flowLayout1将右边Properties中的alignment设置为LEFT,这时Jpanel1中的组键就会向左排列。选中其中一个组键,在Properties中的preferredSize可以设置组键的宽和高。同样的方法在Jpanel2中画三个Jbutton按钮,将text分别设为“增加”、“删除”、“修改”。点选Jpane2的flowLayout2将右边Properties中的hgap设置为30(按钮的间距,可根据自己的需要调整数值大小), 这样就调整了三个按钮之间的距离,设置vgap还可以改变Jpane2区域的高度。   第四,在jScrollPane1中建一个表格用来显示数据库数据的内容,在组件盘内点选Swing 页签,选取JTable图标,将Jtable加入到jScrollPane1中。   最后,将this中的defaultCloseOperation改为EXIT_ON_CLOSE,这样在关闭窗口时程序会自动退出。   程序源代码如下(除中文注释部分的两句是自己加上去,其余是自动生成): import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.Vector; import javax.swing.table.DefaultTableModel; public class Frame1 extends JFrame { BorderLayout borderLayout1 = new BorderLayout(); JPanel jPanel1 = new JPanel(); JPanel jPanel2 = new JPanel(); JPanel jPanel3 = new JPanel(); JLabel jLabel1 = new JLabel(); JTextField jTextField1 = new JTextField(); JButton jButton1 = new JButton(); FlowLayout flowLayout1 = new FlowLayout(); FlowLayout flowLayout2 = new FlowLayout(); JButton jButton2 = new JButton(); JButton jButton3 = new JButton(); JButton jButton4 = new JButton(); GridLayout gridLayout1 = new GridLayout(); JScrollPane jScrollPane1 = new JScrollPane(); JTable jTable1 = new JTable(); public Frame1() { try { jbInit(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { Frame1 frame1 = new Frame1(); frame1.setSize(new Dimension(400, 350)); frame1.show(); } private void jbInit() throws Exception { this.getContentPane().setLayout(borderLayout1); jPanel1.setBackground(Color.red); jPanel1.setLayout(flowLayout1); jPanel2.setBackground(Color.red); jPanel2.setLayout(flowLayout2); jPanel3.setBackground(Color.pink); jPanel3.setLayout(gridLayout1); jLabel1.setPreferredSize(new Dimension(100, 16)); jLabel1.setText("请输入查询条件"); jTextField1.setPreferredSize(new Dimension(140, 22)); jTextField1.setText(""); jButton1.setText("查询"); jButton1.addActionListener(new Frame1_jButton1_actionAdapter(this)); flowLayout1.setAlignment(FlowLayout.LEFT); flowLayout1.setHgap(5); flowLayout1.setVgap(10); jButton2.setText("增加"); jButton3.setText("删除"); jButton4.setText("修改"); flowLayout2.setHgap(30); flowLayout2.setVgap(5); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.getContentPane().add(jPanel1, BorderLayout.NORTH); jPanel1.add(jLabel1, null); jPanel1.add(jTextField1, null); jPanel1.add(jButton1, null); this.getContentPane().add(jPanel2, BorderLayout.SOUTH); jPanel2.add(jButton2, null); jPanel2.add(jButton3, null); jPanel2.add(jButton4, null); this.getContentPane().add(jPanel3, BorderLayout.CENTER); jPanel3.add(jScrollPane1, null); jScrollPane1.getViewport().add(jTable1, null); } //模拟查询数据库 void jButton1_actionPerformed(ActionEvent e) { try { //制作表 Vector vcol = new Vector(); //列名 Vector vrow = new Vector(); //内容 for (int col = 1; col < 31; col ) { vcol.addElement("列" col); } for (int row = 1; row < 101; row ) { Vector vr1 = new Vector(); for (int col = 1; col < 31; col ) { vr1.addElement(row "/" col); } vrow.addElement(vr1); } DefaultTableModel dtm = new DefaultTableModel(vrow, vcol); jTable1 = new JTable(vrow, vcol); jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); //滚动条设置左右滚 this.jScrollPane1.getViewport().add(jTable1, null); //在滚动条中放入表 } catch (Exception ex) { JOptionPane.showMessageDialog(null, ex); } } } class Frame1_jButton1_actionAdapter implements java.awt.event.ActionListener { Frame1 adaptee; Frame1_jButton1_actionAdapter(Frame1 adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton1_actionPerformed(e); } }
并行计算加速比曲线解读:阿姆达尔定律与强/弱扩展实验 并行计算的核心目标是用多核、多进程或GPU把任务拆开并行执行,但加速比并不随并行度线性增长。阿姆达尔定律揭示串行分数对性能上限的约束,Karp-Flatt度量则可从实测曲线反推串行开销与通信开销,强扩展和弱扩展分别回答“同样任务能否更快”和“更大任务能否同时间完成”。理解这些原理的价值在于把曲线读成可归因的性能账本,指导OpenMP共享内存、MPI消息传递和CUDA SIMT程序的调优,也适用于课程实验、基准测试和服务器性能排查。围绕加速比曲线、计时口径、伪共享、归约实现与常见排查清单展开分析,有助于避免把 阅读详情

相关推荐

深入探索Java Swing布局管理器

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

weixin_36299472的博客 1211

Java布局器自动布局画界面

  很多初学者在用Java布局器自动布局画界面时,经常遇见不知道如何定义区域大小或按钮之间的距离等问题。其实自动布局也可以解决定义区域大小或按钮之间的距离等问题,只是没有手动布局那么灵活。下面我就举一个例子。   首先,建一个frame文件(Application应用程序),在Design中将this中的layout设置为BorderLayout。   第二,在组件盘内点选Swing Contai

dongliheng的专栏 2151

swoole + redis 实现短信异步发送

本文档记录了使用swoole + redis 实现短信异步发送 功能

终于搞明白如何将一个JPanel放置到JScrollPane里面并显示滚动条了

终于搞明白如何将一个JPanel放置到JScrollPane里面并显示滚动条了(2007-04-27 02:43:56)转载分类:On My Way 一开始,我是知道不能直接在JScrollPane对象里用add()的,需要获取它的视图板getViewport();这是一个JViewport对象,然后在这上面添加,而且它不能添加轻量级组件。  我弄了一个JPanel,上面用网格布局10行1列的,本来想,把这个板添加到Viewport上就行了,结果发现,没有出现滚动条,于是我设置Viewport的布局方式,用

七斤 6308

单词接龙的C语言程序

单词接龙的C语言程序,已经可以运行了,包括建好的工程,很实用!

CMOS和TTL多余输入端如何处理

CMOS和TTL多余输入端如何处理 前言:通过本文的讨论,可以使初学者能够清楚地了解在使用CMOS门电路和TTL门电路时多余输入时,应如何处理才能保证其电路的正常逻辑关系,从而保证电路的正常、稳定地工作。

JScrollPane控件中添加其他控件的问题&&JScrollPane设置滚动条&&调整滚动速度

如果要在JScrollPane控件中添加其他控件,不能用下面这种方法 JScrollPane j = new JScrollPane();j.add(new JButton("点击")); 只能通过以下方法添加 JScrollPane j = new JScrollPane(new JButton("点击")); 或者 JScrollPane j = new JScrollPane();...

weixin_30851409的博客 394

jQuery.validate 中文API.doc

主要是讨论在客户端实现表单验证,这里介绍一个jQuery插件Validate验证表单工具,可实现邮箱Email、字符chars、电话号码、文本区域textarea和复选框checkbox有效性验证。 jQuery.validate 中文API

解决关于Java使用布局管理器后不能调节各区域大小的问题

解决Java初学者在使用布局管理器后不能调节各区域大小的问题

a254808723的博客 6617

台达伺服位置控制接线图

S7-200和台达ASDA-B2伺服定位模式接线图(伺服定位模式)

模块学习(一)——编码电机

编码电机测速

qq_51406846的博客 7911

Java布局管理器实现关掉,Java布局管理器使用方法探讨

下载本文示例代码很多初学者在用Java布局器自动布局画界面时,经常遇见不知道如何定义区域大小或按钮之间的距离等问题。我写过一篇《实现JAVA手动布局中各个组件能随窗口变化的方法》的文章,有读者反映算坐标不好算,问能不能用布局器实现文章中的界面。其实自动布局也可以解决定义区域大小或按钮之间的距离等问题,只是没有手动布局那么灵活。下面我就举一个例子。  首先,建一个frame文件(Applicatio...

weixin_39647977的博客 208

SAP PP实战:MRP Area怎么用?手把手教你按产线、委外供应商拆分物料计划

本文详细解析了SAP PP模块中MRP Area的功能与应用,指导如何按产线、委外供应商拆分物料计划,实现精细化物料需求管理。通过实战案例展示MRP Area在减少计划冲突、提升库存准确率方面的显著效果,为制造业企业提供可落地的解决方案。

weixin_27015733的博客 432

java关闭布局管理器窗口_Java布局管理器使用方法探讨

一起学习很多初学者在用Java布局器自动布局画界面时,经常遇见不知道如何定义区域大小或按钮之间的距离等问题。我写过一篇《实现JAVA手动布局中各个组件能随窗口变化的方法》的文章,有读者反映算坐标不好算,问能不能用布局器实现文章中的界面。其实自动布局也可以解决定义区域大小或按钮之间的距离等问题,只是没有手动布局那么灵活。下面我就举一个例子。首先,建一个frame文件(Application应用程序)...

weixin_32017139的博客 354

Android HCE模拟NFC标签:实现跨设备NDEF数据共享

本文详细介绍了Android HCE技术如何模拟NFC标签实现跨设备NDEF数据共享。通过核心代码实现和标准AID配置,使手机能够被第三方NFC应用直接读取,支持文本、网址、Wi-Fi配置等多种数据类型,大幅提升设备间数据交换的便捷性和兼容性。

pytorch8learner的博客 251

STM32按键中断切换红绿蓝灯

通过以上步骤,我们实现了使用STM32的按键中断来切换红绿蓝LED灯的功能。在实际应用中,可能还需要考虑更多的细节,如按键消抖、更精确的延时实现等。但上述代码提供了一个基本的框架和思路,可以根据具体需求进行扩展和优化。希望这篇博客对您有所帮助!

2301_79865940的博客 952

Java布局管理器

   Java的GUI界面设计中,布局控制是相当重要的一个环节。将一个组件加入容器中时,布局控制器决定了所加入的组件的大小和位置。如果将一个容器的布局管理器设为null,即用方法setLayout(null),则要设定容器中每个对象的大小和位置。而布局管理器能自动设定容器中组件的大小和位置,当容器改变大小时,布局管理器能自动改变其中组件的大小和布局。   java.awt包共定义了五种

Wanghaishanren的专栏 7452

Transformer在量化交易中的应用:从时序预测到策略生成

Transformer模型凭借其强大的自注意力机制,在自然语言处理领域取得了革命性突破。其核心原理是通过并行计算和动态权重分配,有效捕捉序列数据中的长距离依赖关系。这一特性使其在金融时间序列分析中展现出巨大技术价值,能够处理市场数据中的复杂非线性模式和长期关联。在量化交易场景下,Transformer可将价格、成交量等连续数据通过离散化分桶处理,转化为类似文本的序列,进而进行预测或直接生成交易信号。本文以QuantGPT项目为例,探讨了如何将这一前沿AI架构迁移应用于金融领域,涵盖了从数据作为“语言”的编码

weixin_26757949的博客 367

流式布局管理器

FlowLayout(流式布局管理器)是 JPanel 和 JApplet 的默认布局管理器。FlowLayout 会将组件按照从上到下、从左到右的放置规律逐行进行定位。与其他布局管理器不同的是,FlowLayout 布局管理器不限制它所管理组件的大小,而是允许它们有自己的最佳大小。 FlowLayout 布局管理器的构造方法如下。 FlowLayout():创建一个布局管理器,使用默认的居中对齐方式和默认 5 像素的水平和垂直间隔。 FlowLayout(int align):创建一个布局管理器,使

QQ418579986的博客 1029

RTKLIB PPP与RTK_POST精密定位实战:从实时到事后处理的完整流程解析

本文详细解析了如何使用RTKLIB进行精密单点定位(PPP)的完整流程,涵盖从实时处理到事后处理(RTK_POST)的关键步骤。文章深入探讨了数据准备、软件配置、核心参数设置(如电离层、对流层、潮汐改正)以及常见问题排查,旨在帮助用户掌握高精度GNSS定位技术,实现从入门到精通的实战应用。

weixin_29047919的博客 281

Android Treble 简介

上面两段话来自官网上,Android 8.0 重新设计了 Android 操作系统框架(在一个名为“Treble”的项目中),以便让制造商能够以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。本文主要整理一下Android Treble框架。

私房菜 9275

Java 的布局管理器GridBagLayout的使用方法【图文说明】

https://www.cnblogs.com/taoweiji/archive/2012/12/14/2818787.html GridBagLayout是java里面最重要的布局管理器之一,可以做出很复杂的布局,可以说GridBagLayout是必须要学好的的, GridBagLayout类是一个灵活的布局管理器,它不要求组件的大小相同便可以将组件垂直、水平或沿它们的基线对齐。 ...

weixin_33800593的博客 449

第1.2章 机器人SLAM计算机基础总结(二):VSCode教程及 AI等效率插件推荐

如何高效编写代码?怎样快速调试程序?**别担心,今天就给大家带来一款超强大的编程神器 ——VSCode,以及能让编程之路 “一马平川” 的实用插件推荐,无论你是新手小白还是资深大神,都能从中受益!

行知SLAM 1862

Java连载122-布局管理器、边界布局管理器

一、编写窗体 1.左右边距、按钮 package com.bjpowernode.java_learning; import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; public class D122_1_Test { public static void main(String[] args) { final Frame f = new Frame("Flowlayout");//创建一个名为F

weixin_44630050的博客 238

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: Martin Fowler中国行日程安排
下一篇: BeanShell将成为Java平台上的第三种编程语言
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值