展开全部

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布局相关推荐

  1. java null布局_Java Swing 绝对布局管理方法,null布局

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import java.awt.Container; import java.awt.Dimension; import java.awt.Rectang ...

  2. java flowlayout 左对齐_Java Swing组件布局管理器之FlowLayout(流式布局)入门教程

    本文实例讲述了Java Swing组件布局管理器之FlowLayout(流式布局).分享给大家供大家参考,具体如下: FlowLayout应该是Swing布局管理器学习中最简单.最基础的一个.所谓流式 ...

  3. java swing 布局_java swing的四种常用布局

    第三种卡片布局可用于完成简单的抽奖程序,这个还是挺有趣的. 一:流式布局FlowLayout 实现代码: import java.awt.FlowLayout ; import javax.swing ...

  4. java scrollpane 设置透明_java swing 之 JScrollPane(滚动面板)的使用

    /** * java swing 之JScrollPane面板 * 在设置界面时,可能会遇到在一个较小的容器窗体中显示一个较大部分的内容,这时可以使用 * JScrollPane面板,JscrollP ...

  5. java swing进度条_Java Swing创建自定义闪屏:在闪屏上添加Swing进度条控件(转)

    本文将讲解如何做一个类似MyEclipse启动画面的闪屏,为Java Swing应用程序增添魅力. 首先看一下效果图吧, 原理很简单,就是创建一个Dialog,Dialog有一个进度条和一个Label ...

  6. java swing 知乎_java swing 界面开发

    Swing界面开发 Swing体系组件:JFrame(窗体),JButton(按钮),JTree(树形结构)等 java中的界面类: java.awt包:颜色,布局,监听器等 javax.swing包 ...

  7. java窗口程序实例_Java Swing快速构建窗体应用程序

    以前接触java感觉其在桌面开发上,总是不太方便,没有一个好的拖拽界面布局工具,可以快速构建窗体. 最近学习了一下NetBeans IDE 8.1,感觉其窗体设计工具还是很不错的 , 就尝试一下做了一 ...

  8. java qq ui界面_java swing 创建一个简单的QQ界面教程

    记录自己用java swing做的第一个简易界面. LoginAction.java package com.QQUI0819; import javax.swing.*; import java.a ...

  9. java实现弹球游戏_Java swing版弹球游戏源代码下载

    package 弹球; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionL ...

最新文章

  1. 黄聪:分享 SQL Server 2005 分区实现教程
  2. Error:No resource identifier found for attribute 'appComponentFactory' in packag
  3. 5.1matlab数据统计分析(最大值、最小值、平均值、中值、和、积、累加和、累加积、标准差、相关系数、排序)
  4. 好家伙,MacOS 新版本终于删掉自带 Python2,连 Python 死忠粉都叫好!
  5. 浅谈CruiseControl的部署
  6. spring component-scan filter
  7. 主页是单一的HTML文件,什么是主页,下列说法最为准确的是 _____。
  8. java教程传智播客,面试真题解析
  9. 工作49:loaction注意
  10. 如何使用Python的Flask和Google App Engine构建网络应用
  11. Qt之QHeaderView自定义排序(获取正确的QModelIndex)
  12. java调用tuxedo中间件,BEA-TUXEDO中间件介绍.ppt
  13. html特殊乘转义字符,HTML特殊转义字符列表
  14. 高速缓存(cache)存储器
  15. 年前刷完了这份足足485页的“1000道Java工程师面经”,成功上岸!
  16. simulink多输入示波器波形数据导出到workspace用plot函数重新画出
  17. 别人从你身上偷不走的10件东西
  18. 解决excel数据透析表计算类型没有非重复计数选项
  19. 讯飞智能办公本Air,迈向高效办公的新利器
  20. 命令行中的“-”和“--”

热门文章

  1. Unity之翻牌游戏分析
  2. 浏览不良网站一定会有记录吗?无痕模式有用吗?
  3. 管理FTP没有权限的问题
  4. 搭建流媒体推流/拉流服务(RTMP/RTSP/HLS/HTTP-FLV)
  5. dex是什么的缩写_肿瘤药物缩写
  6. 薅羊毛时间版第十一次更新
  7. [原创]Silverlight开发实践系列导航(提供源码)
  8. DFS与BFS 的爱恨情仇
  9. Could NOT find CUDNN: Found unsuitable version “..“, but required is at least “6“
  10. 金小指智能营销软件,策划案例丨精准