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布局管理器:这就是最复杂的一个布局管理器了,网格包布局.在此布局中,组件 ...
随机推荐
- 实现JSON数据的存储和读取
事前准备: //创建一个Crime类 public class Crime { private String mTitle; private UUID mUUID; private Date mDat ...
- Python命令行参数sys.argv[]
学习C语言的时候就没弄明白命令行参数的用法,在学习Pyton 的时候又遇到了命令行参数,在这里稍微学习了一下,稍微明白了一些在这里做个记录方便后面回顾复习. Sys.argv[]是用来获取命令行参数的 ...
- 浅析C++内存分配与释放操作过程——三种方式可以分配内存new operator, operator new,placement new
引言:C++中总共有三种方式可以分配内存,new operator, operator new,placement new. 一,new operator 这就是我们最常使用的 new 操作符.查看汇 ...
- Silverlight中无法设置卫星程序集为中立资源程序集
熟悉.Net资源文件体系的人都知道,中立资源程序集(Neutral Resource Assembly)的作用在于,一旦指定语言文化(Culture)的资源查找不到,便会Fallback到中立资源程序 ...
- 适应多行长文本的Android TextView
适应多行长文本的Android TextView
- java代码收藏:获取HttpServletRequest中某一前缀的参数
public static Map getParametersStartingWith(ServletRequest request, String prefix) { Enumeration par ...
- 关于优化性能<主要是速度方面>的个人心得 【转】
一个web项目后期的维护主要在于性能方面.数据吞吐量一旦增大各种bug都出来了.那些通过硬件<数据库分表,数据库主从分离,读写分离>等的一些手段此处就不多说了.本文主要在编码方面做一个性能 ...
- 问题解决——Group Box控件遮挡其它控件
转载请保持文章的完整性并显要地注明出处 本文链接:http://blog.csdn.net/wlsgzl/article/details/38042301 ====================== ...
- Mvc4.0 提取 Cookie 里的东西
/// <summary> /// 提取Cookie /// </summary> /// <returns></returns> public sta ...
- JS 事件绑定的几种方式 小笔记
第一种 var test=document.getElementById('add'); add.onclick=function(){ alert('1'); } 直接在对象上注册事件 缺点:如果我 ...