java swing 自由布局_java swing布局
展开全部
null layout不是很好,所有的东西都要自己定义,一旦窗口大小32313133353236313431303231363533e59b9ee7ad9431333363386132变化就要重新计算。我建议使用MigLayout。上手慢,但很强大。http://www.miglayout.com
而且,就算你要用内建的Layout Manager,还有一个GridBag Layout,比Grid Layout更强大一点。
接下来,那个边框,不是JSeparator, 而是一个边框。我猜是Border result = BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), "修改信息: ");
如果是我,使用MigLayout,以上代码还是比较简单的:import java.awt.event.KeyEvent;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.border.Border;
import javax.swing.border.EtchedBorder;
import net.miginfocom.swing.MigLayout;
public class MyFrame extends JFrame {
public MyFrame() {
begin();
}
private void begin() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new MigLayout("insets 10, fill", "[]", "[]5[]"));
//first panel
JPanel first = new JPanel();
//first这个panel有5像素的边缘,2列,3行。第一列右对齐,占40%宽度;第二列默认,左对齐,占据剩余所有空间。
first.setLayout(new MigLayout("insets 5, fill", "[right, 40%]5[fill, grow]", "[]5[]5[]"));
first.setOpaque(false);
//这个面板的border有些特殊:createTitledBorder()方法的签名可以有两个:前一个是线的类型,后面一个是标题文本。
Border result = BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), "修改信息: ");
first.setBorder(result);
//把first加到contentPane里面
add(first, "cell 0 0, grow");
JLabel original = new JLabel("输入原密码: ");
JLabel newPass = new JLabel("输入新密码: ");
JLabel confirm = new JLabel("确认新密码: ");
JTextField orig_field = new JTextField();
JTextField new_field = new JTextField();
JTextField confirm_field = new JTextField();
//miglayout的核心就是网格排布。用坐标来定义添加元素的位置
first.add(original, "cell 0 0, w 100!"); //add to col 0, line 0, min:pref:max width all set to 100
first.add(newPass, "cell 0 1, w 100!"); //add to col 0, line 1
first.add(confirm, "cell 0 2, w 100!"); //add to col 0, line 2
first.add(orig_field, "cell 1 0, w 150!"); //add to col 1, line 0, min:pref:max width all set to 150
first.add(new_field, "cell 1 1, w 150!"); //add to col 1, line 1
first.add(confirm_field, "cell 1 2, w 150!"); //add to col 1, line 2
//按钮面板
JPanel buttons = new JPanel();
buttons.setOpaque(false);
//边缘为5像素;有两列,中间是10像素的间距,列内元素居中;有一行,行中上下对齐也是居中
buttons.setLayout(new MigLayout("insets 5, fill", "[center]10[center]", "[center]"));
JButton yes = new JButton("Y. 确定");
//快捷键设为虚拟键Y,得到下划线效果
yes.setMnemonic(KeyEvent.VK_Y);
JButton quit = new JButton("Q. 退出");
//快捷键设为虚拟键Q,得到下划线效果
quit.setMnemonic(KeyEvent.VK_Q);
//把yes按钮加到第一列第一行,min:pref:max的大小都设为100像素
buttons.add(yes, "cell 0 0, w 100!");
//把quit按钮加到第二列第一行,min:pref:max的大小都设为100像素
buttons.add(quit, "cell 1 0, w 100!");
//把按钮面板加到contentPane里面
add(buttons, "cell 0 1, grow");
pack();
setBounds(0, 0, 500, 400);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
MyFrame frame = new MyFrame();
}
});
}
}
效果是这样:
MigLayout还允许你使用辅助线来debug。把这一行:first.setLayout(new MigLayout("insets 5, fill", "[right, 40%]5[fill, grow]", "[]5[]5[]"));
改成:first.setLayout(new MigLayout("insets 5, fill,debug", "[right, 40%]5[fill, grow]", "[]5[]5[]"));
你就可以看到first面板里面的辅助线了。
java swing 自由布局_java swing布局相关推荐
- java null布局_Java Swing 绝对布局管理方法,null布局
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import java.awt.Container; import java.awt.Dimension; import java.awt.Rectang ...
- java flowlayout 左对齐_Java Swing组件布局管理器之FlowLayout(流式布局)入门教程
本文实例讲述了Java Swing组件布局管理器之FlowLayout(流式布局).分享给大家供大家参考,具体如下: FlowLayout应该是Swing布局管理器学习中最简单.最基础的一个.所谓流式 ...
- java swing 布局_java swing的四种常用布局
第三种卡片布局可用于完成简单的抽奖程序,这个还是挺有趣的. 一:流式布局FlowLayout 实现代码: import java.awt.FlowLayout ; import javax.swing ...
- java scrollpane 设置透明_java swing 之 JScrollPane(滚动面板)的使用
/** * java swing 之JScrollPane面板 * 在设置界面时,可能会遇到在一个较小的容器窗体中显示一个较大部分的内容,这时可以使用 * JScrollPane面板,JscrollP ...
- java swing进度条_Java Swing创建自定义闪屏:在闪屏上添加Swing进度条控件(转)
本文将讲解如何做一个类似MyEclipse启动画面的闪屏,为Java Swing应用程序增添魅力. 首先看一下效果图吧, 原理很简单,就是创建一个Dialog,Dialog有一个进度条和一个Label ...
- java swing 知乎_java swing 界面开发
Swing界面开发 Swing体系组件:JFrame(窗体),JButton(按钮),JTree(树形结构)等 java中的界面类: java.awt包:颜色,布局,监听器等 javax.swing包 ...
- java窗口程序实例_Java Swing快速构建窗体应用程序
以前接触java感觉其在桌面开发上,总是不太方便,没有一个好的拖拽界面布局工具,可以快速构建窗体. 最近学习了一下NetBeans IDE 8.1,感觉其窗体设计工具还是很不错的 , 就尝试一下做了一 ...
- java qq ui界面_java swing 创建一个简单的QQ界面教程
记录自己用java swing做的第一个简易界面. LoginAction.java package com.QQUI0819; import javax.swing.*; import java.a ...
- java实现弹球游戏_Java swing版弹球游戏源代码下载
package 弹球; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionL ...
最新文章
- 黄聪:分享 SQL Server 2005 分区实现教程
- Error:No resource identifier found for attribute 'appComponentFactory' in packag
- 5.1matlab数据统计分析(最大值、最小值、平均值、中值、和、积、累加和、累加积、标准差、相关系数、排序)
- 好家伙,MacOS 新版本终于删掉自带 Python2,连 Python 死忠粉都叫好!
- 浅谈CruiseControl的部署
- spring component-scan filter
- 主页是单一的HTML文件,什么是主页,下列说法最为准确的是 _____。
- java教程传智播客,面试真题解析
- 工作49:loaction注意
- 如何使用Python的Flask和Google App Engine构建网络应用
- Qt之QHeaderView自定义排序(获取正确的QModelIndex)
- java调用tuxedo中间件,BEA-TUXEDO中间件介绍.ppt
- html特殊乘转义字符,HTML特殊转义字符列表
- 高速缓存(cache)存储器
- 年前刷完了这份足足485页的“1000道Java工程师面经”,成功上岸!
- simulink多输入示波器波形数据导出到workspace用plot函数重新画出
- 别人从你身上偷不走的10件东西
- 解决excel数据透析表计算类型没有非重复计数选项
- 讯飞智能办公本Air,迈向高效办公的新利器
- 命令行中的“-”和“--”
热门文章
- Unity之翻牌游戏分析
- 浏览不良网站一定会有记录吗?无痕模式有用吗?
- 管理FTP没有权限的问题
- 搭建流媒体推流/拉流服务(RTMP/RTSP/HLS/HTTP-FLV)
- dex是什么的缩写_肿瘤药物缩写
- 薅羊毛时间版第十一次更新
- [原创]Silverlight开发实践系列导航(提供源码)
- DFS与BFS 的爱恨情仇
- Could NOT find CUDNN: Found unsuitable version “..“, but required is at least “6“
- 金小指智能营销软件,策划案例丨精准