Swing中设置关闭窗口验证与添加背景图片

package com.swing.test;

import java.awt.EventQueue;
import java.awt.Image;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent; import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel; /**
*@Title BackGroundPic.java
*@description TODO
*@ time 2018-8-31 下午11:11:50
*@author Anderson
*@version 1.0
*/
public class BackGroundPic extends JFrame {
private static final long serialVersionUID = 1L; private JPanel contentPane;//最大的Jpanel层
private JLabel lblBackgroundl;//背景图片标签 /**
* Create the frame.
*/
public BackGroundPic() {
contentPane = new JPanel();
setContentPane(contentPane);
contentPane.setLayout(null);//绝对布局
setResizable(false);//不允许用户自定义大小
setSize(612 ,398);//设置Jpanel大小
setLocationRelativeTo(null);//居中 //设置点关闭后什么也不做.为添加关闭窗口验证做铺垫
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); /**
* 为整个窗口添加退出确认,前提是
* setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
*/
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
int isExits = JOptionPane.showConfirmDialog(null, "确认退出吗?",
"Exit", JOptionPane.OK_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE);
if (isExits == JOptionPane.OK_OPTION) {
System.exit(0);
}
}
}); /**********************设置背景图片***********************/
/**
* @author Administrator
* getScaledInstance(width,height,hints);
* //width,height,hints为方法中的参数
* width the width to which to scale the image.
* height the height to which to scale the image.
* hints flags to indicate the type of algorithm to use for image resampling.
* //指示用于图像重新取样的算法类型的标志,指定缩放的比例算法
*/
ImageIcon background = new ImageIcon("./img/login_box.jpg");
background.setImage(
background.getImage().getScaledInstance(
background.getIconWidth(), background.getIconHeight(),
Image.SCALE_DEFAULT
)
);
lblBackgroundl = new JLabel();
lblBackgroundl.setBounds(0, 0, 608, 369);
lblBackgroundl.setIcon(background);
lblBackgroundl.setHorizontalAlignment(0);
getContentPane().add(lblBackgroundl);
System.out.println(
"图片宽: "+background.getIconWidth() +
"高:" + background.getIconHeight()
);
/**********************以上,设置背景图片***********************/ } /**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
BackGroundPic frame = new BackGroundPic();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
} }

字符串下拉框的设置

private static JComboBox<String> cobAuth;

cobAuth = new JComboBox<String>();
cobAuth.setBounds(244, 235, 147, 21); cobAuth.addItem("Leader");//添加下拉内容
cobAuth.addItem("Worker");
//cobAuth.setSelectedIndex(0);//设置默认显示下拉框
contentPane.add(cobAuth); //获取下拉框值
private static String auth1;
auth1 = (String) cobAuth.getSelectedItem();

密码输入框的设置

private static JPasswordField pwdField;

pwdField = new JPasswordField();
pwdField.setBounds(244, 210, 147, 21);
contentPane.add(pwdField); //获取密码框值
private static String pwd1;
pwd1 = String.valueOf(pwdField.getPassword()).trim();

自己写的一些判断的工具类

package pers.jason.market.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern; /**
* 工具包
* @author Administrator
*
*/
public final class Util {
/**
* 判断字符串是否为空
* @param str
* @return
*/
public static boolean isEmpty(String str) {
return null == str || "" .equals(str.trim()) ? true : false;
}
/**
* 判断字符串是否为整数
* @Title : isNumber
* @Description:
* @param str
* @return
* @return boolean
* @author Anderson
* @data 2018-8-23 下午10:05:06
*/
public static boolean isInt (String str){ Pattern pattern = Pattern.compile("[0-9]+");
Matcher isNum = pattern.matcher(str);
if( !isNum.matches() ){
return false;
}
return true;
}
/**
* 判断是否为小数
* @Title : isDouble
* @Description:
* @param str
* @return
* @return boolean
* @author Anderson
* @data 2018-8-23 下午10:59:04
*/
public static boolean isDouble (String str){
String [] num = str.split("\\.");
if(num.length == 2 && isInt(num[0]) && isInt(num[1]) ){
return true;
}
return false;
}
/**
*
* @Title : isDolores
* @Description:判断是否为美元
* @param str
* @return
* @return boolean
* @author Anderson
* @data 2018-8-27 上午11:38:26
*/
public static boolean isDolores(String str){
if("$".equals(str)){
return true;
}else
return false;
}
/**
*
* @Title : isRMB
* @Description: 判断是否为人民币
* @param str
* @return
* @return boolean
* @author Anderson
* @data 2018-8-27 下午12:33:11
*/
public static boolean isRMB(String str){
if("¥".equals(str)){
return true;
}
return false;
}
}

object.properties 配置文件(对象属性)

Transaction=pers.jason.market.transaction.impl.TransactionImpl
UserDao=pers.jason.market.dao.impl.UserDaoImpl
UserService=pers.jason.market.service.impl.UserServiceImpl
AccountDao=pers.jason.market.dao.impl.AccountDaoImpl
AccountService=pers.jason.market.service.impl.AccountServiceImpl
SupplierDao=pers.jason.market.dao.impl.SupplierDaoImpl
SupplierService=pers.jason.market.service.impl.SupplierServiceImpl SupplierGroupDao=pers.jason.market.dao.impl.SupplierGroupDaoImpl
SupplierGroupService=pers.jason.market.service.impl.SupplierGroupServiceImpl
GoodsGroupDao=pers.jason.market.dao.impl.GoodsGroupDaoImpl
GoodsGroupService=pers.jason.market.service.impl.GoodsGroupServiceImpl

等号左边是接口,等号右边是其对应的实现类所在的包及实现类本身

之所以要写这个,是因为要写对象工厂

对象工厂

package pers.jason.market.object.factoy;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
/**
*
* @Title ObjectFactory.java
* @description TODO 对象工厂
* @time 2018-8-20 下午3:11:19
* @author Anderson
* @version 1.0 ok
*/
public final class ObjectFactory {
private static Map<String, Object> objectMap = new HashMap<String,Object>();
static {
Properties properties = new Properties();
try {
properties.load(new FileInputStream("Object.properties"));
Enumeration<?> enumeration =properties.keys();
while(enumeration.hasMoreElements()) {
String key = (String)enumeration.nextElement();
String value = properties.getProperty(key);
objectMap.put(key, Class.forName(value).newInstance());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Object getInstance(String key) {//得到对象
//System.out.println(key+":"+objectMap.get(key));
return objectMap.get(key);
} }

事务管理接口

package pers.jason.market.transaction;
/**
*@Title Transaction.java
*@description TODO 事务管理接口
*@ time 2018-8-18 下午11:50:51
*@author Anderson
*@version 1.0
*/
public interface Transaction { /**
*
* @Title : begin
* @Description:事务开启
* @return void
* @author Anderson
* @data 2018-8-18 下午11:51:21
*/
public abstract void begin(); /**
*
* @Title : commit
* @Description:事务提交
* @return void
* @author Anderson
* @data 2018-8-18 下午11:51:26
*/
public abstract void commit(); /**
*
* @Title : rollback
* @Description:事务回滚
* @return void
* @author Anderson
* @data 2018-8-18 下午11:51:30
*/
public abstract void rollback();
}

事务管理接口实现类

package pers.jason.market.transaction.impl;

import java.sql.Connection;
import java.sql.SQLException; import pers.jason.market.transaction.Transaction;
import pers.jason.market.util.JDBCUtil; /**
*@Title TransactionImpl.java
*@description TODO 事务管理接口实现类
*@ time 2018-8-18 下午11:52:59
*@author Anderson
*@version 1.0 照抄完毕
*/
public class TransactionImpl implements Transaction{ /**
* 事务开启
*/
@Override
public void begin() {
Connection conn = JDBCUtil.getConnection();
try {
conn.setAutoCommit(false);//false为禁止自动提交
} catch (SQLException e) {
e.printStackTrace();
} } /**
* 事务提交
*/
@Override
public void commit() {
Connection conn = JDBCUtil.getConnection();
try {
conn.commit();//事务提交
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtil.closeConnection(conn);
} } /**
* 事务回滚
*/
@Override
public void rollback() {
Connection conn = JDBCUtil.getConnection();
try {
conn.rollback();//事务回滚
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtil.closeConnection(conn);
}
}
}

加载数据库的连接类

package pers.jason.market.util;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSourceFactory; /**
*@Title JDBCUtil.java
*@description TODO 加载数据库的连接类
*@ time 2018-8-18 下午11:58:34
*@author Anderson
*@version 1.0 照抄完毕
*/ public final class JDBCUtil {
private static DataSource dataSource =null;
private static ThreadLocal<Connection> threadLocal = new ThreadLocal<Connection>();
static {
Properties properties = new Properties();
try {
//读取配置文件
properties.load(new FileInputStream("database.properties"));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
dataSource = BasicDataSourceFactory.createDataSource(properties);//加载配置文件
} catch (Exception e1) {
e1.printStackTrace();
}
} /**
* 获取连接
* @return
*/
public static Connection getConnection() {
Connection conn = threadLocal.get();//从线程局部变量map中取出连接
if(null == conn) {//首次获取连接为null。要读取配置文件获取连接
try {
conn =dataSource.getConnection();//获取连接
threadLocal.set(conn);//保存连接到局部变量中
} catch (SQLException e) {
e.printStackTrace();
}
}
return conn;
} /**
* 关闭连接
* @param conn
*/
public static void closeConnection(Connection conn) {
if(null != conn) {
threadLocal.remove();//先从局部变量中删除
try {
conn.close();//然后再关闭自身连接
} catch (SQLException e) {
e.printStackTrace();
}
}
} }

其中配置文件为:(database.properties)
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/db_market
username=root
password=cc321321

JDBC管理类

package pers.jason.market.util;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; import pers.jason.market.rowmapper.RowMapper; /**
* JDBC管理类
* @author Administrator
*
*/
public final class JDBCTemplate {
/**
* 增删改方法
* @param sql
* @param param
* @return
* @throws SQLException
*/
public static int executeUpdate(String sql,Object ...param) {
int rows=-1;
Connection conn=JDBCUtil.getConnection();
try {
PreparedStatement ps=conn.prepareStatement(sql);
if(null!=param && param.length>0){
for (int i = 0; i < param.length; i++) {
ps.setObject((i+1), param[i]);
} }
rows=ps.executeUpdate();
close(null,ps);
} catch (SQLException e) {
e.printStackTrace();
}
return rows; } /**
* 查询方法
* @param sql
* @param rowmapper
* @param param
* @return
* @throws SQLException
*/ public static List<Object> executeQuery(String sql,RowMapper rowmapper,Object ...param) throws SQLException {
List<Object> list = new ArrayList<Object>();
Connection conn = JDBCUtil.getConnection();//获取连接
PreparedStatement ps = conn.prepareStatement(sql);
if(null != param && param.length>0) {
for (int i = 0; i < param.length; i++) {
ps.setObject((i+1), param[i]);// 占位符从1开始 下标从0开始
}
}
System.out.println("JDBC 中PS: " + ps); //测试
ResultSet rs = ps.executeQuery();
while(rs.next()) {
Object obj = rowmapper.getObjectMapper(rs);
list.add(obj);
}
close(rs,ps);
return list;
} private static void close(ResultSet rs,PreparedStatement ps) throws SQLException {
if(null != rs) {
rs.close();
}
if(null != ps) {
ps.close();
}
} }

【代码总结● Swing中的一些操作与设置】的更多相关文章

  1. 【Swing】理解Swing中的事件与线程

    talk is cheap , show me the code. Swing中的事件 事件驱动 所有的GUI程序都是事件驱动的.Swing当然也是. GUI程序不同于Command Line程序,一 ...

  2. C#开发中使用Npoi操作excel实例代码

    C#开发中使用Npoi操作excel实例代码 出处:西西整理 作者:西西 日期:2012/11/16 9:35:50 [大 中 小] 评论: 0 | 我要发表看法 Npoi 是什么? 1.整个Exce ...

  3. java swing中Timer类的学习

    最近在完成学校课程的java平时作业,要实现一个计时器,包含开始.暂停以及重置三个功能.由于老师规定要用这个timer类,也就去学习了一下,顺便记录一下. 首先呢去查了一下java手册上的东西,发现t ...

  4. 【Swing】一点基础操作

    之前实训的老师不推荐swing就没有学...然而学校老师又是另一种态度...加上学长作比赛用swing...学一下吧 1.将窗体放在中间 jdk1.4之后setLocationRelativeTo(o ...

  5. Java自学-图形界面 Swing中的线程

    Swing中的线程 步骤 1 : 三种线程 在Swing程序的开发中,需要建立3种线程的概念 初始化线程 初始化线程用于创建各种容器,组件并显示他们,一旦创建并显示,初始化线程的任务就结束了. 事件调 ...

  6. 理解CSV文件以及ABAP中的相关操作

    在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separat ...

  7. 【Java EE 学习 33 上】【JQuery样式操作】【JQuery中的Ajax操作】【JQuery中的XML操作】

    一.JQuery中样式的操作 1.给id=mover的div采用属性增加样式.one $("#b1").click(function(){ $("#mover" ...

  8. 【Java EE 学习 32 下】【JQuery】【JQuey中的DOM操作】

    一.JQuery中的DOM操作. 什么是DOM:DOM是一中和浏览器.平台.语言无关的接口,使用该接口可以轻松访问页面中所有的标准组件.DOM简称文档对象模型,是Document Oject Mode ...

  9. git工作中的常用操作

    上班开始,打开电脑,git pull:拉取git上最新的代码: 编辑代码,准备提交时,git stash:将自己编辑的代码暂存起来,防止git pull时与库中的代码起冲突,否则自己的代码就白敲了: ...

随机推荐

  1. vue项目 构建 打包 发布 三部曲

    一.vue项目的创建 1.首先第一肯定是要有Node.js及npm这个不多说了2.安装脚手架 此时可以直接浏览-但是现在肯定有很多小白想将他发布到gitHub上并可以浏览,使用vue全家桶制作自己的博 ...

  2. Python + Appium 环境搭建

    ---恢复内容开始--- Appium自动化公司内部测试培训1-环境搭建 课程目的 一.Python + Appium 环境搭建 课程内容 1    安装前准备工作 搭建环境所需要的安装文件已经下载好 ...

  3. 计算机协议、标准以及OSI模型的简单介绍

    由概念启发学习,引导学习.本篇文章中包含了一些最基本的概念和底层知识.虽然零碎,但是这是基础. 一.协议和标准 协议指的是一组控制数据通信的规则.协议有三要素:语法(syntax),语义(semant ...

  4. ZooKeeper的使用---Java程序

    一.导入库 以下库存放在目录lib中: audience-annotations-0.5.0.jar jline-0.9.94.jar log4j-1.2.17.jar netty-3.10.6.Fi ...

  5. Ueditor 专题

    https://github.com/xwjie/SpringBootUeditor 提交表单提交表单设置按照部署编辑器的教程,完成编辑器加载 把容器放到form表单里面,设置好要提交的路径,如下面代 ...

  6. serialPort操作结构体Hashtable的使用

  7. java之集合Collection详解之2

    package cn.itcast_02; import java.util.ArrayList; import java.util.Collection; /* * 练习:用集合存储5个学生对象,并 ...

  8. pymongo 学习总结

    1.简介 MongoDB是一种强大.灵活.追求性能.易扩展的数据存储方式.是面向文档的数据库,不是关系型数据库,是NoSQL(not only SQL)的一种.所谓的面向文档,就是将原来关系型数据库中 ...

  9. [爬虫]Windows下如何安装python第三方库lxml

    lxml是个非常有用的python库,它可以灵活高效地解析xml与BeautifulSoup.requests结合,是编写爬虫的标准姿势. 但是,当lxml遇上Windows,简直是个巨坑.掉在安装陷 ...

  10. C++类中静态变量和普通变量的区别

    静态变量: 1.静态变量会被编到程序的exe里面,从程序启动到结束,它一直存在: 2.静态变量的初始化值为0: 3.全局变量默认是静态变量: 4.在类中的函数变量前面加了static的也是静态变量,只 ...