JAVA Layout
/**
* baidu :组件不会直接放到框架上,而是放在若干个面板上,这些面板再放到窗格上?
* 实际上在JFrame上可直接添加Jbutton
*
* BorderLayout
FlowLayout
GridLayout
GridBagLayout
CardLayout
BoxLayout
*
* GridBagLayout稍复杂,主要看BoxLayout、BorderLayout
*/
package layoutmanager;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.CardLayout;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
/**
*
* @author Albert Li
*/
public class LayoutManager {
JFrame mJFrame = new JFrame();
public void InitGridLayout(){
mJFrame.setTitle("GridLayout");
mJFrame.setLayout(new GridLayout(3,3,5,5));
for(int i=1; i<10; i++){
JButton mJButton = new JButton(String.valueOf(i));
mJFrame.add(mJButton);
}
mJFrame.setBounds(300, 300, 300, 300);
mJFrame.setVisible(true);
mJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void InitFlowLayout(){
mJFrame.setTitle("FlowLayout");
mJFrame.setLayout(new FlowLayout(5, 10, 10));
for(int i=1; i<10; i++){
JButton mJButton = new JButton(String.valueOf(i));
mJFrame.add(mJButton);
}
mJFrame.setBounds(300, 300, 300, 300);
mJFrame.setVisible(true);
mJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
Panel pnlCommandArea = new Panel();
Panel pnlDisplayArea = new Panel();
CardLayout mCardLayout = new CardLayout();
JButton mjButton = new JButton("Command");
public void InitCardLayout(){
mJFrame.setTitle("CardLayout");
mJFrame.setLayout(new BorderLayout(10,10));
pnlDisplayArea.setLayout(mCardLayout);
Panel pnlFirst = new Panel();
Panel pnlSed = new Panel();
Panel pnlThird = new Panel();
pnlFirst.add(new Label("first"));
pnlSed.add(new Label("second"));
pnlThird.add(new Label("third"));
pnlFirst.add(new JButton("button 1"));
pnlSed.add(new JButton("button 2"));
pnlThird.add(new JButton("button 3"));
pnlDisplayArea.add(pnlFirst,"Cardlayout_first");
pnlDisplayArea.add(pnlSed,"Cardlayout_sed");
pnlDisplayArea.add(pnlThird,"Cardlayout_Third");
((CardLayout)pnlDisplayArea.getLayout()).show(pnlDisplayArea,"CardLayout_first");
mjButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//throw new UnsupportedOperationException("Not supported yet.");
// ProcessAction(e);
mCardLayout.next(pnlDisplayArea);
// ((CardLayout)pnlDisplayArea.getLayout()).show(pnlDisplayArea, "Cardlayout_sed");
}
});
pnlCommandArea.add(mjButton);
mJFrame.add(pnlCommandArea,BorderLayout.NORTH);
mJFrame.add(pnlDisplayArea,BorderLayout.CENTER);
mJFrame.setBounds(300, 300, 300, 300);
mJFrame.setVisible(true);
mJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//将组件添加到Box,此时且不需要设置布局,由新建Box时设置水平还是垂直
public void InitBoxLayout(){
mJFrame.setTitle("BoxLayout");
//不需要下面这句话,错误
//mJFrame.setLayout(new BoxLayout(mJFrame,BoxLayout.X_AXIS ));
Box mBox =Box.createHorizontalBox();
for(int i=1; i<15; i++){
JButton mJButton = new JButton(String.valueOf(i));
mBox.add(mJButton);
}
mJFrame.add(mBox);
mJFrame.setBounds(300, 300, 300, 300);
mJFrame.pack();
mJFrame.setVisible(true);
mJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//将组件直接添加到Panel,需先设置panel 的布局(为BoxPanel , 垂直还是水平)
//我坐在窗前,有时候还可以看到鸟飞过,面对不过空无一物的天空,底下是城市的边缘,很矮很矮的地方。
public void boxLayout(){
Panel mPanel = new Panel();
BoxLayout mBoxLayout = new BoxLayout(mPanel, BoxLayout.Y_AXIS);
mPanel.setLayout(mBoxLayout);
for(int i=1; i<15; i++){
JButton mJButton = new JButton(String.valueOf(i));
mPanel.add(mJButton);
}
mJFrame.add(mPanel);
mJFrame.setBounds(300, 300, 300, 300);
mJFrame.pack();
mJFrame.setVisible(true);
mJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void BoxTopPanel() {
JPanel topPanel = new JPanel();
String[] columnName = { "姓名", "性别", "单位", "参加项目", "备注" };
String[][] rowData = { { "张三", "男", "计算机系", "100 米 ,200 米", "" },
{ "李四", "男", "化学系", "100 米,铅球", "" },
{ "李四", "男", "化学系", "100 米,铅球", "" },
{ "李四", "男", "化学系", "100 米,铅球", "" },
{ "李四", "男", "化学系", "100 米,铅球", "" },
};
// 创建表格
JTable table = new JTable(new DefaultTableModel(rowData, columnName));
// 创建包含表格的滚动窗格
JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
// 定义 topPanel 的布局为 BoxLayout,BoxLayout 为垂直排列
topPanel.setLayout(new BoxLayout(topPanel, BoxLayout.Y_AXIS));
// 先加入一个不可见的 Strut,从而使 topPanel 对顶部留出一定的空间
topPanel.add(Box.createVerticalStrut(10));
// 加入包含表格的滚动窗格
topPanel.add(scrollPane);
// 再加入一个不可见的 Strut,从而使 topPanel 和 middlePanel 之间留出一定的空间
topPanel.add(Box.createVerticalStrut(10));
mJFrame.add(topPanel);
mJFrame.setBounds(300, 300, 300, 150);
//mJFrame.pack();
mJFrame.setVisible(true);
mJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void InitGridBagLayout(){
GridBagLayout mGridBagLayout = new GridBagLayout();
mJFrame.setLayout(mGridBagLayout);
GridBagConstraints mGridBagConstraints = new GridBagConstraints();
mGridBagConstraints.fill = GridBagConstraints.BOTH;
mGridBagConstraints.gridx = 0;
mGridBagConstraints.gridy = 0;
mGridBagConstraints.gridheight = 2;
mGridBagConstraints.gridwidth = 1;
mGridBagConstraints.anchor = GridBagConstraints.NORTH;
mGridBagConstraints.weightx = 0;
mGridBagConstraints.weighty = 0;
JButton btn = new JButton("button 1");
mGridBagLayout.setConstraints(btn, mGridBagConstraints);
mJFrame.add(btn);
mGridBagConstraints.fill = GridBagConstraints.BOTH;
mGridBagConstraints.gridx = 300;
mGridBagConstraints.gridy = 300;
mGridBagConstraints.gridheight = GridBagConstraints.REMAINDER;
mGridBagConstraints.gridwidth = 10;
mGridBagConstraints.anchor = GridBagConstraints.SOUTHEAST;
mGridBagConstraints.weightx = 0;
mGridBagConstraints.weighty = 0;
btn = new JButton("button 2");
mGridBagLayout.setConstraints(btn, mGridBagConstraints);
mJFrame.add(btn);
mJFrame.setBounds(300, 300, 300, 300);
// mJFrame.pack();
mJFrame.setVisible(true);
mJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void ProcessAction(ActionEvent e){
if(((Button)e.getSource()).equals(mjButton)){
mCardLayout.next(pnlDisplayArea);
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
LayoutManager mLayoutManager = new LayoutManager();
// mLayoutManager.InitGridLayout();
//mLayoutManager.InitFlowLayout();
//mLayoutManager.InitCardLayout();//BorderLayout
//
// mLayoutManager.InitBoxLayout();
//mLayoutManager.InitGridBagLayout();
// mLayoutManager.boxLayout();
mLayoutManager.BoxTopPanel();
}
}
JAVA Layout的更多相关文章
- java layout 表格项增加、删除、修改
实现的内容为:点击表格某项,再点击删除钮,可实现删除点击表格某项,再点击编辑按钮,可实现内容改变点击添加按钮,可实现向表格中添加内容 总结:总的来说中间遇到了很多困难,但是都一步步的解决了. pack ...
- Java语法笔记
目录 知识点 不支持 恶心事 与C#的区别 组件 学习资料 母版页 知识点 类 静态方法,即可以在类上被调用,也可以在实例对象上被调用. Java类 先执行静态构造函数,再执行静态方法或静态字段,所以 ...
- Google Map API v2 步步为营(一) ----- 初见地图
官方文档:https://developers.google.com/maps/documentation/android/start?hl=zh-CN 先谷歌后百度.使用google的api基本上按 ...
- Android Developers:两个视图渐变
淡入淡出动画(也被称为渐隐)逐渐淡出一个UI组件,同时淡入另一个.这个动画在你想在你的应用程序中切换内容或者是视图的情况下非常有用.淡入淡出非常微妙并短,但支持从一个屏幕到下一个屏幕流畅的过渡.当你不 ...
- 【Android Developers Training】 73. 布局变化的动画
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 72. 缩放一个视图
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 70. 使用ViewPager实现屏幕滑动
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 69. 视图切换的淡入淡出效果
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- Swing-GridBagLayout用法-入门
注:本文内容转自:Java Layout总结-GridBagLayout.内容根据笔者理解稍有整理. GridBagLayout布局管理器:这就是最复杂的一个布局管理器了,网格包布局.在此布局中,组件 ...
随机推荐
- 《UNIX网络编程》UDP客户端服务器:消息回显
udp写的程序相比tcp简单一些,在socket()与bind()之后,不需要connect(),accept()等步骤,直接简化为了sendto()与recvfrom(). 编译运行同前面的tcp. ...
- 转:JavaScript函数式编程(三)
转:JavaScript函数式编程(三) 作者: Stark伟 这是完结篇了. 在第二篇文章里,我们介绍了 Maybe.Either.IO 等几种常见的 Functor,或许很多看完第二篇文章的人都会 ...
- css案例学习之父子块的margin
两边还会有些距离,这是body默认的. 代码: <head> <title>父子块的margin</title> <style type="text ...
- POJ 3481 Double Queue STLmap和set新学到的一点用法
2013-08-08 POJ 3481 Double Queue 这个题应该是STL里较简单的吧,用平衡二叉树也可以做,但是自己掌握不够- -,开始想用两个优先队列,一个从大到小,一个从小到大,可是 ...
- printdir-deldir-bmp
#include<unistd.h> #include<stdio.h> #include<dirent.h> #include<string.h> # ...
- 如何同时激活两个不同版本的MyEclipse 【MyEclipse2013和MyEclipse2014同时激活】
激活一个MyEclipse的步骤,大家都会,在这里就不多说了,不会的可以看:http://jingyan.baidu.com/article/3ea51489cc14d452e71bba7a.html ...
- python-多线程(原理篇)
多线程的基本概念 语言学习总是绕不过一些东西,例如多进程和多线程,最近越来越发现,上来看几个实例练习一下过几天就不知其所以然了.所以还是先看看原理,在看实例练习吧! 线程的概念 概念:线程是进程中执行 ...
- 关于 viewport meta
典型代码 <meta name="viewport" content="width=device-width, initial-scale=1.0"> ...
- 共享参数ContentProvider 类与数据库绑定,如何通过共享参数测试类,测试数据库的增删改查功能
Intent可以传一个对象 当两个界面之间跳转时,需要传递一个对象过去,是通过使用Bundle类,并且实体类需要serializable实现序列化,传递方法如下: 定义一个静态常量作为key值 pub ...
- SQL中的去重操作
if not object_id('Tempdb..#T') is null drop table #T Go Create table #T([ID] ),[Memo] nvarchar()) In ...