Swing组件是java中的图形组件,用来开发图形界面的。
1.常用的两类组件
1)容器组件(可以存放其他组件)
如: JFrame 窗体类
JPanel 面板类
JMenuBar 菜单栏类
JMenu 菜单类
2)元素组件
如: JLable 标签类
JButton 按钮类
JTextField 输入框类
JPasswordField 密码输入框类
JCheckBox 复选框类
JComboBox 下拉框类
JMenuItem 菜单选项类
2.常用的布局
BorderLayout 边框布局
FlowLayout 流式布局
GridLayout 网格布局
其实每个容器都有默认的布局方式
JFrame 默认边框布局
JPanel 默认流式布局
3.界面实现基本步骤
1)生成一个类,在类中定义主函数和初始化界面的方法
2)在初始化界面的方法中实例化一个窗体对象
3)设置窗体的各项基本属性
4)设置窗体的布局方式
5)实例化需要的容器和元素组件对象并添加到相应容器上
6)在主函数中实例化类的对象,调用初始化界面的方法
下面以一个实例来运用这些知识帮助学习:
class="java" name="code">import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
public class QQ extends JFrame{
/**程序入口
* @param args
*/
public static void main(String[] args) {
QQ q=new QQ();
q.initUI();
}
/**
* 初始化界面方法
*/
private void initUI() {
//设置窗体的属性值
this.setLocation(400, 200);//设置显示位置
this.setSize(378, 291);//设置大小
this.setTitle("QQ登陆界面");//设置标题
this.setDefaultCloseOperation(3);//设置关闭方式
this.setResizable(false);//设置窗体是否可以最大化
// 将背景图片添加到layeredPane
ImageIcon img = new ImageIcon("images/beijing.png");
JLabel imgLabel = new JLabel(img);
this.getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE));
imgLabel.setBounds(0,0,img.getIconWidth(), img.getIconHeight());
Container p4=this.getContentPane();
//实例化一个在北边的JLabel
JLabel jlb = new JLabel();
jlb .setPreferredSize(new Dimension(378,109));//设置标签的大小
//添加标签到窗体的北边
this.add(jlb,BorderLayout.NORTH);
//实例化一个在西边的JPanel
JPanel panelWest = new JPanel();
panelWest.setLayout(new FlowLayout(FlowLayout.RIGHT));
panelWest.setPreferredSize(new Dimension(105,0));
JLabel jlaImage2 = new JLabel(new ImageIcon("images/touxiang.png"));
panelWest.add(jlaImage2);
//添加panelWest到窗体的西边
this.add(panelWest,BorderLayout.WEST);
//实例化一个中央JPanel
JPanel panelCenter = new JPanel();
panelCenter.setLayout(new FlowLayout( FlowLayout.LEFT,10,5));
JComboBox jcb = new JComboBox();
jcb.setEditable(true);
jcb.setPreferredSize(new Dimension(170,25));//设置组件的大小
JLabel jbuReg = new JLabel("注册账号");
jbuReg.setFont(new Font("宋体",0,14));//设置显示的字体样式
JPasswordField jpf = new JPasswordField();
jpf.setPreferredSize(new Dimension(170,25));//设置组件的大小
JLabel jbu = new JLabel("找回密码");
jbu.setFont(new Font("宋体",0,14));
JCheckBox jcb1 = new JCheckBox("记住密码");
jcb1.setFont(new Font("宋体",0,13));
JCheckBox jcb2 = new JCheckBox("自动登录");
jcb2.setFont(new Font("宋体",0,13));
panelCenter.add(jcb);
panelCenter.add(jbuReg);
panelCenter.add(jpf);
panelCenter.add(jbu);
panelCenter.add(jcb1);
panelCenter.add(jcb2);
this.add(panelCenter,BorderLayout.CENTER);
//实例化一个放置在窗体南边的面板
JPanel panelSouth=new JPanel();
JButton btn = new JButton(new ImageIcon("images/denglu.png"));
btn.setPreferredSize(new Dimension(145,30));
panelSouth.add(btn);
this.add(panelSouth,BorderLayout.SOUTH);
//将个个组件设置透明
jcb1.setOpaque(false);
jcb2.setOpaque(false);
((JPanel) p4).setOpaque(false);
panelWest.setOpaque(false);
panelCenter.setOpaque(false);
panelSouth.setOpaque(false);
//设置窗体显示
this.setVisible(true);
}
}