本项目适合学习完java基础和数据库基础后来练手的项目,博主也是才学完就跟着某老师视频做起来的项目,开此帖记录下.
网上搜集的素材和文档,源码可以无视,里面写的很不全,最终我会补全这系列的.下载这个主要是了解整个项目
csdn下载地址
首先整个项目使用mode2模式开发,整体结构分为4个部分,看下图
–DB是数据库,SQLHelper是对数据库操作层,Model则是模型层,比如人事操作模型,菜谱操作模型等,最上面View则是显示出来的界面,Util则封装了项目开发中所需要的一些工具,大多都是静态方法.
有了模型,下面开始做项目了,首先建好4个包,相当于四个模型,并在View中建立第一屏Index.java,闪屏登录
要做的第一屏
分析一下还是很简单的,一个没有外围窗口的面板,上面是一个Gif的图片,下面是一个进度条,并且进度条走完的时候其启动到登录界面,分析一下,先建立好变量和函数
JFrame和JWindow不同的就是JFrame有外围框框,所以这里舍弃JFrame,因为要进度条自己走动,所以实现Runnable接口
public class Index extends JWindow implements Runnable{
private JLabel jll;//显示图片
private JProgressBar jpb;//显示进度条
public static void main(String[] args) {
Index index = new Index();
}
接下来,给JLable添加图片,给进度条初始化
/** * 构造函数初始化界面 */
public Index() {
jll = new JLabel(new ImageIcon("image//index//index.gif"));
jpb = new JProgressBar();
setSize(400, 240);//JWindow设置大小
setLocation(ViewUtil.getWindowWidth()/2-200, ViewUtil.getWindowHeight()/2-120);
jpb.setStringPainted(true);//设置进度条显示字符串
jpb.setMaximum(100);//设置进度条显示最大值
jpb.setBackground(Color.blue);//设置进度条背景
this.add(jll,BorderLayout.CENTER);
this.add(jpb, BorderLayout.SOUTH);
setVisible(true);
}
接下来设置进度条自动走动的方法,也就是重写Run方法,不过要注意当进度条满的时候需要启动新的界面,我们就再创建一个Login.java在View包中
@Override
public void run() {
int num = 0;
jpb.setValue(num);
while(true){
if (num == 100) {
break;
}
try {
Thread.sleep(1000);
num +=10;
jpb.setValue(num);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//启动新的界面
new Login();
this.dispose();//当前窗口消失
到此闪屏界面结束,下面开始登陆界面
整个界面就是一张图片,然后图片上添加两个Jlabel和两个输入窗口,两个JButton,而整个就是对话框形式,所以定义为Jdialog
带有图片的JPanel需要重写Paint方法,并且后面经常用到这个,所以我们再Util包中单写一个带图片的JPanel
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JPanel;
public class JpanelUtil extends JPanel{
Image im;
public JpanelUtil(Image im) {
this.im = im;
this.setSize(ViewUtil.getWindowWidth(), ViewUtil.getWindowHeight());
}
/** * 这个方法是重新画jpanel中的控件用的 */
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(im, 0, 0,this.getWidth(),this.getHeight(), this);
}
}
接下来写登陆界面,先创建好需要的变量,写主函数是为了测试方便
private JTextField textUser;
private JPasswordField Txtpassword;
private JButton btnOK;
private JButton btnCancel;
private JLabel labUser;
private JLabel labPassword;
private Image im;
/** * Launch the application. */
public static void main(String[] args) {
try {
Login dialog = new Login();
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
} catch (Exception e) {
e.printStackTrace();
}
}
然后初始化
/** * Create the dialog. */
public Login() {
labUser = new JLabel("请输入用户名");
labPassword = new JLabel("请输入密码");
labUser.setBounds(60, 210, 80, 30);
labUser.setFont(FontUtil.f3);
getContentPane().add(labUser);
labPassword.setBounds(60,250,80,30);
labPassword.setFont(FontUtil.f3);
getContentPane().add(labPassword);
textUser = new JTextField();
textUser.setBounds(150, 210, 130, 30);
textUser.setBorder(BorderFactory.createLoweredBevelBorder());
getContentPane().add(textUser);
Txtpassword = new JPasswordField();
Txtpassword.setBounds(150, 250, 130, 30);
Txtpassword.setBorder(BorderFactory.createLoweredBevelBorder());
getContentPane().add(Txtpassword);
btnOK = new JButton("确认");
btnOK.setBounds(80, 290, 70, 30);
btnOK.setFont(FontUtil.f3);
getContentPane().add(btnOK);
btnCancel = new JButton("取消");
btnCancel.setBounds(200, 290, 70, 30);
btnCancel.setFont(FontUtil.f3);
add(btnCancel);
setBounds(ViewUtil.getWindowWidth()/2-180, ViewUtil.getWindowHeight()/2-180, 359, 359);
try {
im = ImageIO.read(new File("image//index//login.gif"));
} catch (IOException e) {
e.printStackTrace();
}
add(new JpanelUtil(im));
//不使用上下框
setUndecorated(true);
setVisible(true);
}
到此登录界面设计完毕,下一篇添加点击事件,从而实现简单的登录