【代码总结● Swing中的一些操作与设置】
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中的一些操作与设置】的更多相关文章
- 【Swing】理解Swing中的事件与线程
talk is cheap , show me the code. Swing中的事件 事件驱动 所有的GUI程序都是事件驱动的.Swing当然也是. GUI程序不同于Command Line程序,一 ...
- C#开发中使用Npoi操作excel实例代码
C#开发中使用Npoi操作excel实例代码 出处:西西整理 作者:西西 日期:2012/11/16 9:35:50 [大 中 小] 评论: 0 | 我要发表看法 Npoi 是什么? 1.整个Exce ...
- java swing中Timer类的学习
最近在完成学校课程的java平时作业,要实现一个计时器,包含开始.暂停以及重置三个功能.由于老师规定要用这个timer类,也就去学习了一下,顺便记录一下. 首先呢去查了一下java手册上的东西,发现t ...
- 【Swing】一点基础操作
之前实训的老师不推荐swing就没有学...然而学校老师又是另一种态度...加上学长作比赛用swing...学一下吧 1.将窗体放在中间 jdk1.4之后setLocationRelativeTo(o ...
- Java自学-图形界面 Swing中的线程
Swing中的线程 步骤 1 : 三种线程 在Swing程序的开发中,需要建立3种线程的概念 初始化线程 初始化线程用于创建各种容器,组件并显示他们,一旦创建并显示,初始化线程的任务就结束了. 事件调 ...
- 理解CSV文件以及ABAP中的相关操作
在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separat ...
- 【Java EE 学习 33 上】【JQuery样式操作】【JQuery中的Ajax操作】【JQuery中的XML操作】
一.JQuery中样式的操作 1.给id=mover的div采用属性增加样式.one $("#b1").click(function(){ $("#mover" ...
- 【Java EE 学习 32 下】【JQuery】【JQuey中的DOM操作】
一.JQuery中的DOM操作. 什么是DOM:DOM是一中和浏览器.平台.语言无关的接口,使用该接口可以轻松访问页面中所有的标准组件.DOM简称文档对象模型,是Document Oject Mode ...
- git工作中的常用操作
上班开始,打开电脑,git pull:拉取git上最新的代码: 编辑代码,准备提交时,git stash:将自己编辑的代码暂存起来,防止git pull时与库中的代码起冲突,否则自己的代码就白敲了: ...
随机推荐
- 洛谷 P1450 解题报告
P1450.硬币购物 题目描述 硬币购物一共有\(4\)种硬币.面值分别为\(c1,c2,c3,c4\).某人去商店买东西,去了\(tot\)次.每次带\(d_i\)枚\(c_i\)硬币,买\(s_i ...
- JS——函数
一.函数的种类 1.无参函数 function showName() { alert("我是无参函数"); } 2.有参函数 在函数中的参数为"形式参数" 形式 ...
- QT5:C++实现基于Multimedia的音乐播放器(序)
前段时间C++课设,决定做个播放器,于是参考了网上的代码后,做了个很简陋的音乐播放器(只写了MP3格式)出来,虽然功能甚少,但还是决定把过程记录一下. 成品如下图: 播放器功能: 上.下一首,音量控制 ...
- pycharm的安装及用法
俗话说的好:"工欲善其事,必先利其器",程序员写代码,肯定不能在编译器里面写,这有一个全宇宙最好的python编译器,叫做pycharm ,他的优点呢,大家可以看一下: 优点:1, ...
- 并发库应用之七 & 信号灯Semaphore应用
Semaphore可以维护当前访问自身的线程个数,并且提供了同步机制. Semaphore实现的功能类似于厕所里有5个坑,有10个人要上厕所,同时就只能有5个人占用,当5个人中 的任何一个让开后,其中 ...
- Java 标准 I/O 介绍
一.Java标准I/O知识体系图: 二.I/O是什么 I/O 是Input/Output(输入.输出)的简称,输入流可以理解为向内存输入,输出流是从内存输出. 三.Java I/O 用途与对应的流一览 ...
- Redis数据结构简介
Redis可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为STRING(字符串).LIST(列表).SET(集合).HASH(散列)和ZSET(有序集合).有一部分Redis命令对 ...
- APNS导致消息丢失和发送效率原因
http://blog.csdn.net/tlq1988/article/details/9612237 首先说明一下,本文只是介绍一些容易被开发者忽视,而导致性能低下问题.并不是介绍如何向苹果设备成 ...
- MySQL 在线更改 Schema 工具
MySQL在线更改schema的工具很多,如Percona的pt-online-schema-change. Facebook的 OSC 和 LHM 等,但这些都是基于触发器(Trigger)的,今天 ...
- nsq源码阅读笔记之nsqd(二)——Topic
与Topic相关的代码主要位于nsqd/nsqd.go, nsqd/topic.go中. Topic的获取 Topic通过GetTopic函数获取 GetTopic函数用于获取topic对象,首先先尝 ...