Java图形组件Swing小结
程序员文章站
2022-07-12 12:16:40
...
Java图形组件Swing小结
一、知识点小结
Swing是java中的图形组件,主要用来开发图形界面的。Swing组件有两类,一类是容器类,表示可以装载其他的组件;另一类是元素类表示不可以装载其他的组件。在javax.swing包下的容器组件有JFrame,JPanel和JMenuBar,其中窗体是最大的容器组件,即窗体上可以添加面板,但面板上不能添加窗体;同包下常用的元素组件有JLabel标签类,JButton按钮类,JTextField文本输入框类,JPasswordField密码输入框类,JComboBox下拉框类,JCheckBox复选框类,JMenuItem菜单类等。在java.awt
包下和javax.swing包下都有布局类,只要是以Layout结尾的就是布局类。布局类是要使元素组件在窗体上摆放的有一定的规则,常用的布局类有BorderLayout边框布局,FlowLayout流式布局和GridLayout网格布局等。
二、程序示例
通过Swing中基本组件的简单应用实现QQ登陆界面。
1.实例化一个窗体对象,并添加背景图标,窗体的布局方式为BorderLayout边框布局
程序代码:
package QQLogin2; import java.awt.BorderLayout; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class LoginUI extends JFrame{ /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //实例化一个窗体对象 LoginUI lo = new LoginUI(); //调用初始化界面的方法 lo.showUI(); } private void showUI() { // TODO Auto-generated method stub /* * 设置窗体的基本属性 */ this.setSize(390,320);//设置窗体大小 this.setTitle(" ");//设置窗体标题 this.setLocationRelativeTo(null);//窗口至于屏幕* this.setDefaultCloseOperation(3);//设置关闭窗体是的操作 this.setResizable(false);//设置禁止改变窗体大小 this.setLayout(new BorderLayout());//// JFrame默认的布局是边框布局 //实例化一个背景图标对象 ImageIcon backgroundImage = new ImageIcon("images/QQ截图-登陆界面.png"); //实例化一个标签来显示背景图标 JLabel jlaBackground = new JLabel(backgroundImage); // 设置JLabel组件的显示位置和大小 jlaBackground.setBounds(0, 0, backgroundImage.getIconWidth(),backgroundImage.getIconHeight()); //将jlaBackground添加到JLayeredPane的底层 this.getLayeredPane().add(jlaBackground, new Integer(Integer.MIN_VALUE)); //获取ContentPane对象 JPanel contentPane = (JPanel)this.getContentPane(); //设置ContentPane对象为透明 contentPane.setOpaque(false); //设置窗体可见 this.setVisible(true); } }
运行结果如图:
2.在窗体的中,西,南,北四个方位分别添加面板,初步布局如下图:
3.给各个面板添加组件,完整代码如下:
/* * 定义一个窗体类 */ import java.awt.BorderLayout; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class LoginUI extends JFrame{ /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //实例化一个窗体对象 LoginUI lo = new LoginUI(); //调用初始化界面的方法 lo.showUI(); } private void showUI() { // TODO Auto-generated method stub /* * 设置窗体的基本属性 */ this.setSize(390,320);//设置窗体大小 this.setTitle(" ");//设置窗体标题 this.setLocationRelativeTo(null);//窗口至于屏幕* this.setDefaultCloseOperation(3);//设置关闭窗体是的操作 this.setResizable(false);//设置禁止改变窗体大小 this.setLayout(new BorderLayout());//// JFrame默认的布局是边框布局 //实例化一个背景图标对象 ImageIcon backgroundImage = new ImageIcon("images/QQ截图-登陆界面.png"); //实例化一个标签来显示背景图标 JLabel jlaBackground = new JLabel(backgroundImage); // 设置JLabel组件的显示位置和大小 jlaBackground.setBounds(0, 0, backgroundImage.getIconWidth(),backgroundImage.getIconHeight()); //将jlaBackground添加到JLayeredPane的底层 this.getLayeredPane().add(jlaBackground, new Integer(Integer.MIN_VALUE)); //获取ContentPane对象 JPanel contentPane = (JPanel)this.getContentPane(); //设置ContentPane对象为透明 contentPane.setOpaque(false); /* * 给窗体添加南北西中四块面板 */ //添加南边面板 SouthPanel sp = new SouthPanel(); this.add(sp,BorderLayout.SOUTH); //给中间添加面板 CenterPanel cp = new CenterPanel(); this.add(cp,BorderLayout.CENTER); //添加西边面板 WestPanel wp = new WestPanel(); this.add(wp,BorderLayout.WEST); //添加北边面板 NorthPanel np = new NorthPanel(); this.add(np,BorderLayout.NORTH); //设置窗体可见 this.setVisible(true); } }
/* * 定义中间面板 */ import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class CenterPanel extends JPanel{ public CenterPanel(){ initUI(); } private void initUI() { // TODO Auto-generated method stub //设置面板为透明 this.setOpaque(false); //设置面板布局方式为流式布局左对齐 this.setLayout(new FlowLayout(FlowLayout.LEFT)); //实例化一个下拉框对象 JComboBox jc = new JComboBox(); jc.addItem("QQ号码/手机/邮箱");//默认显示内容 jc.setEditable(true);//设置可编辑 jc.setPreferredSize(new Dimension(185,25));//设置组件大小 //将下拉框添加到面板上 this.add(jc); //添加"注册账号"标签 this.add(new JLabel(" 注册账号")); //实例化一个文本输入框对象 JTextField jf = new JTextField(); jf.setPreferredSize(new Dimension(185,25));//设置文本框大小 //添加文本框到面板上 this.add(jf); //添加"忘记密码"标签 this.add(new JLabel(" 忘记密码")); //添加复选框 JCheckBox jc1 = new JCheckBox("记住密码"); jc1.setOpaque(false);//设置为透明 JCheckBox jc2 = new JCheckBox("自动登录"); jc2.setOpaque(false);//设置为透明 this.add(jc1); this.add(jc2); } }
/* * 定义西边面板 */ import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; public class WestPanel extends JPanel{ public WestPanel(){ initUI(); } private void initUI() { // TODO Auto-generated method stub //设置面板透明 this.setOpaque(false); //设置面板大小 this.setPreferredSize(new Dimension(110,0)); //设置面板为空布局 this.setLayout(new FlowLayout()); //添加按钮图标 //this.add(new JButton(new ImageIcon("images/QQ截图-图标.png"))); //添加一个图标标签 ImageIcon im = new ImageIcon("images/QQ截图-图标.png"); JLabel ja = new JLabel(im); this.add(ja); } }
/* * 定义北边面板 */ import java.awt.Color; import java.awt.Dimension; import javax.swing.JPanel; public class NorthPanel extends JPanel{ public NorthPanel(){ initUI(); } private void initUI() { // TODO Auto-generated method stub //只设置面板大小和透明 this.setPreferredSize(new Dimension(0,120)); this.setOpaque(false); } }
/* * 定义南边面板 */ import java.awt.Color; import java.awt.Dimension; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; public class SouthPanel extends JPanel{ public SouthPanel(){ initUI(); } private void initUI() { // TODO Auto-generated method stub //设置面板大小 this.setPreferredSize(new Dimension(0,50)); this.setOpaque(false); //设置面板颜色 //添加登录按钮 JButton jb = new JButton(new ImageIcon("images/登陆按钮截图.png")); jb.setSize(this.getWidth(), this.getHeight()); this.add(jb);//添加按钮成功 } }
完整程序运行结果如图
程序结束。
上一篇: Java学习事件机制小结
下一篇: Java类与对象小结
推荐阅读
-
Java Swing组件文件选择器JFileChooser简单用法示例
-
java Swing组件setBounds()简单用法实例分析
-
Java Swing组件布局管理器之FlowLayout(流式布局)入门教程
-
Java Swing组件单选框JRadioButton用法示例
-
Java Swing组件复选框JCheckBox用法示例
-
Java编程swing组件JLabel详解以及使用示例
-
Java Swing组件BoxLayout布局用法示例
-
Java实现的可选择及拖拽图片的面板功能【基于swing组件】
-
Java Swing树状组件JTree用法实例详解
-
Java Swing组件编程之JTable表格用法实例详解