首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Swing界面格局

2013-07-16 
Swing界面布局基础知识1.介绍Java的图形界面1.awt(包名)java.awt2.swingjavax.swing为了不频繁的输入java.

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

2.swingjavax.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;
    }
}

热点排行