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. 2017OKR年终回顾与2018OKR初步规划

    一.2017OKR - 年终回顾 自从6月份进行了年中总结,又是半年过去了,我的2017OKR又有了一些milestone.因此,按照国际惯例,又到了年终回顾的时候了,拉出来看看完成了多少.(以下目标 ...

  2. js基础--浏览器标签页隐藏或显示状态 visibility详解

    欢迎访问我的个人博客:http://www.xiaolongwu.cn 前言 在工作中我们可能会遇到这样的需求,当浏览器切换到别的标签页或着最小化时,我们需要暂停页面上正在播放的视频或者音乐,这个需求 ...

  3. 【python3】如何建立爬虫代理ip池

    一.为什么需要建立爬虫代理ip池 在众多的网站防爬措施中,有一种是根据ip的访问频率进行限制的,在某段时间内,当某个ip的访问量达到一定的阀值时,该ip会被拉黑.在一段时间内被禁止访问. 这种时候,可 ...

  4. JAVA中写时复制(Copy-On-Write)Map实现

    1,什么是写时复制(Copy-On-Write)容器? 写时复制是指:在并发访问的情景下,当需要修改JAVA中Containers的元素时,不直接修改该容器,而是先复制一份副本,在副本上进行修改.修改 ...

  5. Spring Cloud Zuul 限流详解(附源码)(转)

    在高并发的应用中,限流往往是一个绕不开的话题.本文详细探讨在Spring Cloud中如何实现限流. 在 Zuul 上实现限流是个不错的选择,只需要编写一个过滤器就可以了,关键在于如何实现限流的算法. ...

  6. 修改eclipse的workspace目录

    打开Window,选择Preferences->General-->Startup and Shutdown->Workspaces,勾选Prompt for workspace o ...

  7. 在Mac OS X中配置Apache + PHP + MySQL 很详细

    这是一篇超级详细的配置mac os下面php+mysql+apache的文章.非常详细我的大部分配置就是参考上面的内容的,比如,PHP不能连接数据库,就是改一下默认的php.ini中pdo_mysql ...

  8. Access Logging Tomcat

    73.6 Configure Access Logging server.tomcat.accesslog.buffered=true # Buffer output such that it is ...

  9. 一文看懂 Github

    GitHub 介绍 GitHub 是为开发者构建的一个开发平台.GitHub 是一个受开发者工作方式启发的开发平台,从开源到商业,能够在上面进行托管和查看代码.管理项目和数百万其他开发人员一起开发软件 ...

  10. python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'解决办法

    .原因是官网的是python2语法写的,看官手动把官网的HTMLTestRunner.py改成python3的语法: 参考:http://bbs.chinaunix.net/thread-415474 ...