Swing界面布局

基础知识
1.介绍Java的图形界面
1.awt (包名) java.awt

2.swing javax.swing
  为了不频繁的输入java.awt和javax.swing,可以实例化完对象后按shift+ctrl+o
  某些人也会用import java.awt.*;和import java.swing.* 但这样机器会在这两个包中逐个的寻找用到的方法,大大加重了其负担。
2.常用的组件
容器组件
JFrame( 默认的布局是边框布局)窗体类 顶级容器
                      JPanel(默认的布局是流式布局) 面板类 最灵活的容器
                      JMenuBar          菜单栏
JMenu 菜单项

           元素组件
JLabel 标签类
JButton 按钮类
JTextField 输入框类
JPasswordField 密码输入框类
JComboBox 下拉框类
JCheckBox 复选框类
JMenuItem 菜单

javax.swing包下的类。

3.常用的布局
BorderLayout     边框布局
FlowLayout       流式布局
GridLayout       网格布局
所有以Layout结尾的类都是布局类。
java.awt,javax.swing都有

4.界面实现
实现界面的步骤:
1.定义类,在类中定义主函数和初始化界面的方法.
2.在初始化界面的方法中,实例化一个JFrame窗体类的对象.
3.设置窗体对象的属性值
4.实例化布局对象并且设置窗体容器的布局方式.
5.实例化对象容器或者元素组件的对象,让后将对象添加到窗体上.
6.在主函数中实例化类的对象,然后调用初始化界面的方法

5.了解下不同布局的特性及用法
BorderLayout(边框布局)
        在下面的QQ登录界面和计算器界面中都有实例
           FlowLayout(流式布局)(默认对齐方式为居中)举例
GridLayout(网格布局)(每个网格大小一致)举例
6.根据组件的排列划分不同的区域
      先设定一个总的布局,布局之中再进行划分和布局
7.容器+布局实现界面
练习题(QQ登录界面,计算器界面)
我的代码:
QQ登录界面:
重点:
   1.界面布局:边框布局和流式布局。
   2.边框布局的使用方法
package swing界面;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
//定义登录界面类
public class enter {

/**
* 程序的主入口函数
*/
public static void main(String[] args) {
// 实例化一个enter类的对象
enter a=new enter();
//调用初始化界面的方法
a.initUI();
}
//定义一个初始化界面的方法
public void initUI(){
//实例化一个JFrame类的对象
JFrame j=new JFrame();
//设置对象的属性值
j.setSize(380,290);//设置对象的大小
j.setTitle("QQ登录");//设置对象的标题
//j.setLocation(180,180);//设置对象的位置
j.setLocationRelativeTo(null);
j.setDefaultCloseOperation(3);//设置窗体关闭时退出程序
j.setResizable(false);//设置禁止改变窗体的大小
//实例化一个背景图标对象
ImageIcon backgroundImage=new ImageIcon("pictures/2.jpg");
// 实例化一个标签对象用来显示背景图标
JLabel jlaBackground = new JLabel(backgroundImage);
// 设置JLabel组件的显示位置和大小
jlaBackground.setBounds(0, 0, backgroundImage.getIconWidth(),
backgroundImage.getIconHeight());
//将jlaBackground添加到JLayeredPane的底层
j.getLayeredPane().add(jlaBackground, new Integer(Integer.MIN_VALUE));
//获取ContentPane对象
JPanel contentPane = (JPanel)j.getContentPane();
//设置ContentPane对象为透明
contentPane.setOpaque(false);
/*
* JFrame默认的布局是边框布局
*/
BorderLayout f  = new BorderLayout();
//设置窗体的布局方式为边框布局
j.setLayout(f);
//创建北边的面板对象
JPanel northPane=new JPanel();
//设置面板为透明
northPane.setOpaque(false);
//设置面板的大小
northPane.setPreferredSize(new Dimension(0,110));
//将northPane添加到窗体的北面
j.add(northPane,BorderLayout.NORTH);

//设置一个西边面板
JPanel westPane=westPane();
//设置面板为透明
    westPane.setOpaque(false);
    //将西边面板添加到窗体
j.add(westPane,BorderLayout.WEST);

//创建一个中间的面板对象
JPanel centerPane=centerPane();
//设置面板为透明
    centerPane.setOpaque(false);
    //将中间面板添加到窗体
j.add(centerPane,BorderLayout.CENTER);

//设置一个南边面板
JPanel southPane=southPane();
    //将南边面板添加到窗体
j.add(southPane,BorderLayout.SOUTH);
j.setVisible(true);//设置窗体为可见
}

/**
* 创建西边面板
*/
public JPanel westPane(){
//实例化一个JPanel对象
JPanel panel=new JPanel();
panel.setPreferredSize(new Dimension(100,0));
//实例化一个流式布局对象,然后指定对齐方式
FlowLayout fl=new FlowLayout(FlowLayout.RIGHT);
//设置panel的布局方式为流式布局
panel.setLayout(fl);
//实例化一个ImageIcon图标对象
ImageIcon pic=new ImageIcon("pictures/1.jpg");
//实例化一个JLable(标签)的对象
JLabel jlaImage=new JLabel(pic);
//将图标添加到面板上
panel.add(jlaImage);
//返回面板对象
return panel;
}
/**
* 创建一个中间面板
*/
public JPanel centerPane(){
JPanel panel=new JPanel();
//实例化一个流式布局对象,然后指定对齐方式
FlowLayout fl=new FlowLayout(FlowLayout.LEFT);
panel.setLayout(fl);
//实例化一个下拉框的对象
JComboBox jco=new JComboBox();
jco.addItem("810556163");//添加选择内容
jco.setEditable(true);
jco.setPreferredSize(new Dimension(185,25));
//将组件添加到panel上
panel.add(jco);
//实例化一个标签对象
JLabel d=new JLabel("注册账号");
panel.add(d);
//实例化一个文本输入框的对象
JTextField n=new JTextField();
n.setPreferredSize(new Dimension(185,25));
panel.add(n);
//实例化一个JLabel对象
JLabel s=new JLabel("找回密码");
panel.add(s);
//设置一个复选框
JCheckBox b=new JCheckBox("记住密码");
b.setOpaque(false);
panel.add(b);
//设置一个复选框
JCheckBox c=new JCheckBox("自动登录");
c.setOpaque(false);
panel.add(c);
return panel;
}
/**
* 创建南边面板的方法
*/
public JPanel southPane(){
JPanel panel=new JPanel();
//JPanel默认的是流式布局(居中对齐)
//实例化一个JButton对象
JButton t=new JButton("登   录");
t.setPreferredSize(new Dimension(155,35));
panel.add(t);
return panel;
}

}


计算器界面:
重点:
   1.布局方式:首先是一个总的边框布局,实例化一个北边面板,中间面板,东边面板。
               在中间面板中使用网格布局,但由于东边面板中的等号按钮比其他按钮大,
               所以在东边面板中使用边框布局,再设置一个中间面板和南边面板,这两
               个面板中均使用网格布局。
   2.边框布局和网格布局的使用方法。
package swing界面;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Dimension;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class calculator {

/**
* @param args
*/
public static void main(String[] args) {
// 实例化一个Login类的对象
calculator l = new calculator();
// 调用初始化界面的方法
l.initUI();
}

/**
* 定义一个初始化界面的方法
*/
public void initUI() {
// 实例化一个JFrame类的对象
JFrame jf = new JFrame();
// 设置对象的属性值
jf.setSize(225, 420);// 设置对象的大小
jf.setTitle("计算器");// 设置对象的标题
//jf.setLocation(100, 100);// 设置对象显示的位置
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(3);// 设置窗体关闭时退出程序
jf.setResizable(false);// 设置禁止改变窗体的大

// JFrame默认的布局是边框布局
BorderLayout bl = new BorderLayout();
// 设置窗体的布局方式为边框布局
jf.setLayout(bl);

// 创建北边的面板对象
JPanel northPane = northPane();
   // 将northPane添加到窗体的北边
jf.add(northPane, BorderLayout.NORTH);


// 创建一个东边的面板对象
JPanel eastPane = eastPane();
   //将eastPane添加到窗体的东边
jf.add(eastPane, BorderLayout.EAST);


// 创建一个中间的面板对象
JPanel centerPane = centerPane();
// 将westPane添加到窗体的西边
jf.add(centerPane, BorderLayout.CENTER);

// 创建南边面板对象
//JPanel southPane = southPane();
// 将southPane面板添加到窗体的南边
//jf.add(southPane, BorderLayout.SOUTH);

jf.setVisible(true);// 设置窗体为可见
}
/**
* 创建北边面板的方法
*
* @return 返回北边面板对象
*/
public JPanel northPane() {
// 实例化一个JPanel对象
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(0, 160));
// 实例化一个JButton对象
JButton jbuLogin1 = new JButton("查看");
jbuLogin1.setPreferredSize(new Dimension(60, 25));
panel.add(jbuLogin1);
// 实例化一个JButton对象
JButton jbuLogin2 = new JButton("编辑");
jbuLogin2.setPreferredSize(new Dimension(60, 25));
panel.add(jbuLogin2);
// 实例化一个JButton对象
JButton jbuLogin3 = new JButton("帮助");
jbuLogin3.setPreferredSize(new Dimension(60,25));
panel.add(jbuLogin3);
//实例化一个文本框
JTextField jte = new JTextField();
jte.setPreferredSize(new Dimension(190, 120));// 设置组件大小
jte.setEditable(true);//设置为可编辑
panel.add(jte);
       // 返回面板对象
return panel;
}
/**
* 创建中间面板的方法
*
* @return 返回中间面板对象
*/
public JPanel centerPane() {
// 实例化一个JPanel对象
JPanel panel = new JPanel();
    // 实例化一个网格布局对象, 设置panel的布局方式为网格布局
panel.setLayout(new GridLayout(6,4));
  panel.add(new Button("MC"));
          panel.add(new Button("MR"));
          panel.add(new Button("MS"));
          panel.add(new Button("M+"));
          panel.add(new Button("←"));
          panel.add(new Button("CE"));
          panel.add(new Button("C"));
          panel.add(new Button("±"));
          panel.add(new Button("7"));
          panel.add(new Button("8"));
          panel.add(new Button("9"));
          panel.add(new Button("/"));
          panel.add(new Button("4"));
          panel.add(new Button("5"));
          panel.add(new Button("6"));
          panel.add(new Button("*"));
          panel.add(new Button("1"));
          panel.add(new Button("2"));
          panel.add(new Button("3"));
          panel.add(new Button("-"));
          panel.add(new Button("0"));
          panel.add(new Button("00"));
          panel.add(new Button("."));
          panel.add(new Button("+"));
// 返回面板对象
return panel;
}
/**
* 创建东边面板的方法
* @return返回东边面板对象
*/
    public JPanel eastPane() {
// 实例化一个JPanel对象
    JPanel panel = new JPanel();
// JFrame默认的布局是边框布局
BorderLayout bl = new BorderLayout();
// 设置窗体的布局方式为边框布局
panel.setLayout(bl);

// 创建一个中间的面板对象
JPanel centerPane = centerPanes();
// 将westPane添加到窗体的中间
panel.add(centerPane, BorderLayout.CENTER);

// 创建南边面板对象
JPanel southPane = southPanes();
// 将southPane面板添加到窗体的南边
panel.add(southPane, BorderLayout.SOUTH);

panel.setVisible(true);// 设置窗体为可见
        // 返回面板对象
return panel;
}
    /**
     * 东边面板中中间面板的方法
     */
    public JPanel centerPanes() {
// 实例化一个JPanel对象
JPanel panel = new JPanel();
    // 实例化一个网格布局对象, 设置panel的布局方式为网格布局
panel.setLayout(new GridLayout(4,1));
  panel.add(new Button("M+"));
          panel.add(new Button("√"));
          panel.add(new Button("%"));
          panel.add(new Button("1/x"));
          return panel;
    }
    /**
     * 东边面板中的南边面板的方法
     * @return
     */
    public JPanel southPanes() {
// 实例化一个JPanel对象
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(40,80));
    // 实例化一个网格布局对象, 设置panel的布局方式为网格布局
panel.setLayout(new GridLayout(1,1));
  panel.add(new Button("="));
  return panel;
    }
}

你可能感兴趣的:(Swing界面布局)