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布局管理器:这就是最复杂的一个布局管理器了,网格包布局.在此布局中,组件 ...
随机推荐
- cocos2d-x box2d使用调试绘图
cocos2d-x box2d使用调试绘图 复制TestCpp的GLES-Render.h和GLES-Render.cpp过来. 添加一个成员变量: GLESDebugDraw *m_debugDra ...
- css案例学习之id要唯一
ID有两个的后果 <html> <head> <title>ID选择器</title> <style type="text/css&qu ...
- Android系统移植与调试之------->如何修改Android设备的开机第一阶段Logo
1.切换到~/mx0831-0525/device/other/TBDG1073/res_pack目录下 2.更换bootup和poweron文件 找一张bmp16位的图片去除后缀名将这两张都替换,转 ...
- Conscription
Conscription Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) Total ...
- Productivity Improvements for the Entity Framework(实体框架设计)【转】
Background We’ve been hearing a lot of good feedback on the recently released update to the Entity F ...
- 图片裁剪:CropZoom插件
上传个人头像的功能:用户在上传自己的照片后,由于照片尺寸不符合网站的要求,要求用户对照片进行裁剪,最终根据用户裁剪的尺寸生成头像. 用户可以对上传的图片进行自由缩放.裁剪,使之符合彩信图片的大小. C ...
- DevExpress控件之:ChartControl 动态绑定数据
private void BindData(ViewType vt) { chartControl1.Series.Clear(); //Series series1 = new Series(&qu ...
- L6 Shell
写出以下shell脚本1 判定一个用参数指定的文件是否为可执行,如果不是,则改为可执行#!/bin/bash if [ -x $1 ]then echo "OK"else echo ...
- How to Use the UTL_MAIL Package
APPLIES TO: PL/SQL - Version 10.1.0.2 and laterInformation in this document applies to any platform. ...
- leetcode Maximum Depth of Binary Tree python
# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = ...