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. 洛谷 P1450 解题报告

    P1450.硬币购物 题目描述 硬币购物一共有\(4\)种硬币.面值分别为\(c1,c2,c3,c4\).某人去商店买东西,去了\(tot\)次.每次带\(d_i\)枚\(c_i\)硬币,买\(s_i ...

  2. JS——函数

    一.函数的种类 1.无参函数 function showName() { alert("我是无参函数"); } 2.有参函数 在函数中的参数为"形式参数" 形式 ...

  3. QT5:C++实现基于Multimedia的音乐播放器(序)

    前段时间C++课设,决定做个播放器,于是参考了网上的代码后,做了个很简陋的音乐播放器(只写了MP3格式)出来,虽然功能甚少,但还是决定把过程记录一下. 成品如下图: 播放器功能: 上.下一首,音量控制 ...

  4. pycharm的安装及用法

    俗话说的好:"工欲善其事,必先利其器",程序员写代码,肯定不能在编译器里面写,这有一个全宇宙最好的python编译器,叫做pycharm ,他的优点呢,大家可以看一下: 优点:1, ...

  5. 并发库应用之七 & 信号灯Semaphore应用

    Semaphore可以维护当前访问自身的线程个数,并且提供了同步机制. Semaphore实现的功能类似于厕所里有5个坑,有10个人要上厕所,同时就只能有5个人占用,当5个人中 的任何一个让开后,其中 ...

  6. Java 标准 I/O 介绍

    一.Java标准I/O知识体系图: 二.I/O是什么 I/O 是Input/Output(输入.输出)的简称,输入流可以理解为向内存输入,输出流是从内存输出. 三.Java I/O 用途与对应的流一览 ...

  7. Redis数据结构简介

    Redis可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为STRING(字符串).LIST(列表).SET(集合).HASH(散列)和ZSET(有序集合).有一部分Redis命令对 ...

  8. APNS导致消息丢失和发送效率原因

    http://blog.csdn.net/tlq1988/article/details/9612237 首先说明一下,本文只是介绍一些容易被开发者忽视,而导致性能低下问题.并不是介绍如何向苹果设备成 ...

  9. MySQL 在线更改 Schema 工具

    MySQL在线更改schema的工具很多,如Percona的pt-online-schema-change. Facebook的 OSC 和 LHM 等,但这些都是基于触发器(Trigger)的,今天 ...

  10. nsq源码阅读笔记之nsqd(二)——Topic

    与Topic相关的代码主要位于nsqd/nsqd.go, nsqd/topic.go中. Topic的获取 Topic通过GetTopic函数获取 GetTopic函数用于获取topic对象,首先先尝 ...