Java界面编程实战(一)——简易QQ登录界面

目标图:

界面分析:

从上部和下部可以看出框架应该是用边界布局。

边界上部添加一个标签附图,下部添加一个JPanel面板构成流式布局带一个按钮和一个标签链接。

在中间部分中,添加一个面板,添加选项卡窗格、文本框、密码框、多选框、标签等组件。

代码实现:

import java.awt.*;
import javax.swing.*;
public class Swing_exercise3 extends JFrame{

	//定义组件
	//上部组件
	JLabel jl1;	
	//下部组件
	JPanel jp1;
	JButton jb1;
	JLabel jl2;
	//中部组件
	JPanel jp2,jp3,jp4;
	JTabbedPane jtbp;
	JTextField jtf1;
	JPasswordField jpf1;
	JCheckBox jcb1,jcb2;
	JLabel jl3,jl4,jl5;
	
	public static void main(String[] args) {
		Swing_exercise3 a=new Swing_exercise3();

	}
	public Swing_exercise3()
	{
		//创建组件
		//上部组件
		jl1=new JLabel(new ImageIcon("image/qq.png"));	//把图片添加到标签中,利用ImageIcon类
		//下部组件
		jp1=new JPanel();
		jb1=new JButton("安全登录");
		jl2=new JLabel("<html><a href='www.qq.com'>注册账号</a>");	//设置标签带有链接
		jl2.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));		//设置鼠标放到标签上会变成一只手
		//中部组件
		jp2=new JPanel();
		jtbp=new JTabbedPane();
		jtf1=new JTextField(10);	
		jpf1=new JPasswordField(10);
		jcb1=new JCheckBox("自动登录");
		jcb2=new JCheckBox("记住密码");
		jl3=new JLabel("<html><a href='www.qq.com'>找回密码</a>");
		jl3.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
		jl4=new JLabel(new ImageIcon("image/qq账号.png"));	
		jl5=new JLabel(new ImageIcon("image/qq密码.png"));
		jp3=new JPanel();
		jp4=new JPanel();
		jp5=new JPanel();
		//添加组件
		//下部组件
		jp1.add(jb1);
		jp1.add(jl2);
		//中部组件
		jp2.add(jl4);
		jp2.add(jtf1);
		jp2.add(jl5);
		jp2.add(jpf1);
		jp2.add(jcb1);
		jp2.add(jcb2);
		jp2.add(jl3);
		jtbp.add("QQ登录",jp2);		//把面板添加到选项卡中
		jtbp.add("手机号码",jp3);
		jtbp.add("电子邮箱",jp4);
		
		this.add(jl1,BorderLayout.NORTH);
		this.add(jp1,BorderLayout.SOUTH);
		this.add(jtbp);		
		//设置布局管理器
		
		//设置窗体实行
		this.setTitle("QQ");		//设置界面标题
		this.setIconImage(new ImageIcon("image/qq.gif").getImage());	//设置标题图像是qq企鹅
		this.setSize(350, 300);				//设置界面像素
		this.setLocation(200, 200);			//设置界面初始位置
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	//设置虚拟机和界面一同关闭
		this.setVisible(true);				//设置界面可视化
	}
}

如何在标签添加图片?

先把在你的工程里创建一个folder文件夹,然后把图片移到文件夹里,利用ImageIcon类来取出图片,可以模仿下述代码,我的文件夹叫image,图片名叫qq账号.png

new ImageIcon("image/qq账号.png")    //新建一个ImageIcon对象,内容是qq账号图片

如何把鼠标显示成小手?

setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR))    //鼠标移动位置显示小手

如何设置标题图片?

我的文件夹叫image,图片名叫qq.gif

setIconImage(new ImageIcon("image/qq.gif").getImage())


欢迎各位在评论区留言探讨~~

fdspackage mypkg; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import java.util.*; import java.sql.*; import java.sql.Statement; import javax.swing.table.*; import javax.swing.tree.*; /** * * @author Administrator */ public class ClassBrowse extends JFrame implements TreeSelectionListener { Statement stmt; ResultSet rs,rsl; DefaultTableModel dtm;//定义数据模型 String[]title;//表头数组 JTree tree;//树 JTable table; DefaultTreeModel treeModel = null;//定义一个默认的树模型,用于建立树 JScrollPane scroll1,scroll2;//定义两个滚动面板 JSplitPane splitPane;//定义一个分割面板 private Object con; public ClassBrowse(){ try{ stmt = ConnectServer1. con. createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); DefaultMutableTreeNode root = new DefaultMutableTreeNode("专业");//根 treeModel = new DefaultTreeModel(root);//建立树模型 initTree(root,0);//调用递归函数建立树模型 tree = new JTree(treeModel);//利用树模型建立树 scroll1 = new JScrollPane(tree); tree.addTreeSelectionListener(this); rs = stmt.executeQuery("select classclass.name as 班级,xsda.no as 学号,xsda.name as 姓名" + " from xsda,classclass where xsda.classid = classclass.id"); ResultSetMetaData dbmd = rs.getMetaData();//得到记录集的元数据,建立表头数组 title = new String[dbmd.getColumnCount()]; for(int i=1;i <=dbmd.getColumnCount();i++) title[i-1] = dbmd.getColumnName(i); dtm = new DefaultTableModel(null,title);//建立表格数据模型 table = new JTable(dtm);//利用数据模型建立表格 scroll2 =new JScrollPane(table); initTable();//建立表 splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,scroll1,scroll2); splitPane.setOneTouchExpandable(true); splitPane.setDividerLocation(200); this.getContentPane().add(splitPane,null);} catch(SQLException e){System.out.println(e);} setTitle("分类查询学生信息"); setSize(500,400); setVisible(true); } void initTree(DefaultMutableTreeNode root,int id){//这是递归函数 DefaultMutableTreeNode node = null;//定义节点 try{ Statement stmt = ConnectServer1. con. createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); ResultSet rs = stmt.executeQuery("select * from classclass where parent =" + id);//查询班级类表 while(rs.next()){ int nno = rs.getInt("id");//取得分类ID String nname = rs.getString("name").trim();//取得分类名称 node = new DefaultMutableTreeNode(nname);//建立树的节点 treeModel.insertNodeInto(node, root, root.getChildCount());//插入节点 initTree(node,nno);} } catch(Exception e){} finally{ try{ rs.close(); }catch(Exception e){} } } public void valueChanged(TreeSelectionEvent e){ JTree tree=(JTree)e.getSource(); //利用JTree的getLastSelectedPathCoponent()方法取得目前选取的节点 DefaultMutableTreeNode selectionNode = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent(); String name = ((String)selectionNode.getUserObject()); String sql = "selcet classclass.name as 班级,xsda.no as 学号,xsda.name as 姓名 from xsda,classclass where xsda.classid = classclass.id"; if(!name.equals("专业")) sql=sql + "and classid in(select id from classclass where rtrim(ltrim(str(id)))like(select ltrim(rtrim(str(id)))+'%'from classclass where rtrim(ltrim(name))='"+name+"'))"; try{ rs = stmt.executeQuery(sql);//利用嵌套查询查出所有数据 initTable(); } catch(Exception ee){} } void initTable(){ dtm.setRowCount(0); try{ rs.beforeFirst(); while(rs.next()){ Vector v1=new Vector(); for(int i=1;i <=title.length;i++) v1.addElement(rs.getString(i)); dtm.addRow(v1); } }catch(SQLException e){e.printStackTrace();} dtm.fireTableStructureChanged(); } public static void main(String arg[]){ JFrame.setDefaultLookAndFeelDecorated(true); Font font = new Font("JFrame",Font.PLAIN,14); Enumeration keys = UIManager.getLookAndFeelDefaults().keys(); while(keys.hasMoreElements()){ Object key = keys.nextElement(); if(UIManager.get(key)instanceof Font) UIManager.put(key, font); } if(!ConnectServer1.conn("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=xsgl","sa","")){ JOptionPane.showMessageDialog(null, "连接数据库失败"); System.exit(0);//关闭数据库 } new ClassBrowse(); } }
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狮子座的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值