简单的ADSL登录界面



import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;

import javax.swing.ButtonGroup;
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.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JSeparator;
import javax.swing.JTextField;

public class ADSL extends JFrame {

	private Container mainCon;

	private JLabel imLab1, nameLab, pwdLab;

	private JTextField nameTxt;

	private JPasswordField pswTxt;

	private JCheckBox forCB;

	private JRadioButton meRa, anyRa;

	private JButton coneBu, cancelBu, oBu, helpBu;

	public ADSL() {

		Toolkit to = Toolkit.getDefaultToolkit();

		this.setTitle("连接  TT");

		this.setBounds((int) (to.getScreenSize().width - 380) / 2, (int) (to.getScreenSize().height - 370) / 2, 380,
				370);
		this.setResizable(false);

		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		this.contains();

		this.setVisible(true);
	}

	private void contains() {
		this.mainCon = this.getContentPane();
		// 把布局期关闭
		this.setLayout(null);
		// 设置标签
		imLab1 = new JLabel();
		this.imLab1.setIcon(new ImageIcon("jpg" + File.separator + "ADSL1.png"));
		this.imLab1.setSize(350, 150);
		this.imLab1.setLocation(15, 5);
		this.mainCon.add(this.imLab1);

		//可以用过html脚本来设置下划线
		nameLab = new JLabel("<html>用户名(<u>U</u>) :</html>");

		this.nameLab.setBounds(20, 160, 80, 20);
		this.mainCon.add(nameLab);

		pwdLab = new JLabel("<html>密 码(<u>P</u>) :</html>");
		this.pwdLab.setBounds(20, 190, 80, 20);
		this.mainCon.add(pwdLab);

		nameTxt = new JTextField();
		this.nameTxt.setBounds(110, 162, 200, 25);
		this.mainCon.add(nameTxt);
		// 设置密码框,做了一个鼠标监听时间。没有输入密码的时候,默认创建一个文本框,覆盖密码框
		pswTxt = new JPasswordField();

		this.pswTxt.setBounds(110, 187, 200, 25);

		addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				JTextField nameTxt1 = new JTextField("[要更改保存的密码,请单击这里]");
				nameTxt1.setFont(new Font("宋体", Font.ITALIC, 12));
				nameTxt1.setBounds(110, 187, 200, 25);
				mainCon.add(nameTxt1);

			}

			public void mouseEntered(MouseEvent e) {
				JTextField nameTxt1 = new JTextField("[要更改保存的密码,请单击这里]");
				nameTxt1.setFont(new Font("宋体", Font.ITALIC, 12));
				nameTxt1.setBounds(110, 187, 200, 25);
				mainCon.add(nameTxt1);
			}

			public void mouseExited(MouseEvent e) {
				JTextField nameTxt1 = new JTextField("[要更改保存的密码,请单击这里]");
				nameTxt1.setFont(new Font("宋体", Font.ITALIC, 12));
				nameTxt1.setBounds(110, 187, 200, 25);
				mainCon.add(nameTxt1);

			}
		});
		this.mainCon.add(pswTxt);

		JSeparator se = new JSeparator();
		se.setBounds(20, 220, 340, 3);
		mainCon.add(se);
		// 设置复选框
		forCB = new JCheckBox("<html>为下面用户保存用户名和密码(<u>S</u>) :</html>");
		forCB.setBounds(20, 225, 240, 20);
		mainCon.add(forCB);
		// 设置单选框
		meRa = new JRadioButton("<html>只是我(<u>N</u>) </html>");
		meRa.setBounds(40, 245, 180, 20);
		mainCon.add(meRa);

		anyRa = new JRadioButton("<html>任何使用此计算机的人(<u>A</u>) </html>");
		anyRa.setBounds(40, 265, 180, 20);
		mainCon.add(anyRa);
		// 把单选框加入小组
		ButtonGroup bu = new ButtonGroup();
		bu.add(meRa);
		bu.add(anyRa);
		// 分割线
		JSeparator se1 = new JSeparator();
		se1.setBounds(20, 288, 340, 3);
		mainCon.add(se1);

		// 设置4个按键
		coneBu = new JButton("<html>连接(<u>C</u>) </html>");
		coneBu.setBounds(21, 300, 80, 25);
		coneBu.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
		
				JOptionPane.showMessageDialog(null, "没有网络连接不上!!");

			}
		});
		mainCon.add(coneBu);

		cancelBu = new JButton("取消");
		cancelBu.setBounds(106, 300, 80, 25);
		mainCon.add(cancelBu);

		oBu = new JButton("<html>属性(<u>O</u>) </html>");
		oBu.setBounds(191, 300, 80, 25);
		mainCon.add(oBu);

		helpBu = new JButton("<html>取消(<u>H</u>) </html>");
		helpBu.setBounds(276, 300, 80, 25);
		mainCon.add(helpBu);

	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值