源代码链接:https://download.csdn.net/download/weixin_46840974/12546310
当你的同学还在DOS界面苦心挣扎的时候,脱颖而出的做法就是让你的程序“可视化”。
那到底要用到来实现?
就我个人而言,如果要完成一个可视化窗口,那么就需要寻找一个简单的窗体实现的代码借此学习。因此我找到了这个网站(https://segmentfault.com/a/1190000009308776)并学习。
那么我们可以得到这样一个思路:想要完成一个大项目,那么就需要懂得如何学习每个小功能。
以下就是我所用到的一些网址整理,免去大家花费时间。希望对大家有帮助。
创建表格JTable(用来输出学生信息):
https://docs.oracle.com/javase/tutorial/uiswing/components/table.html#data
替换左上角图标:
https://blog.csdn.net/qxhly/article/details/71541248
登录界面的文字(JTable)、填空格(JTextField)、按钮功能(JButton):
http://c.biancheng.net/view/1206.html(swing功能首页,具体功能可以在左栏找)
https://www.cnblogs.com/biehongli/p/5751149.html
此外还有我所用到但并不是很重要的小功能:
关于JTable所用到的Objcet的一些问题:
https://bbs.csdn.net/topics/350210032
通过JButton关闭应用程序:
https://blog.csdn.net/oojustin/article/details/84294603
限制文本域输写:(防止暴力破解密码)
https://zhidao.baidu.com/question/936778205491188492.html
更改并美化JButton:
https://blog.csdn.net/pinkriverside/article/details/71104575
将窗体置顶:
https://blog.csdn.net/friendan/article/details/7036394
删除窗体:
https://blog.csdn.net/sky15737/article/details/50850315
同一个类下创建两个窗口:
https://blog.csdn.net/zhangzhikang_zzk/article/details/51416878
同时在我自学的过程中也遇到了许多问题:
读取学生时的编码问题:
https://blog.csdn.net/zhu1371884551/article/details/103713306?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
总结下来上面的三个功能应该是首要功能,这样就可一实现一个登陆界面
@[TOC]登录界面的实现
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.util.Random;
public class window {
public static void main(String[] args) {
new TestDemo("学生管理系统");
}
}
class TestDemo extends JFrame {
private final String userName = "123";
private final String passWord = "123";
private int windowWidth;
private int windowHeight;
private int screenSizeWidth;
private int screenSizeHeight;
public TestDemo(String title) {
super(title);
super.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setSize(256,300);
this.setLayout(null);
this.setResizable(false);
setWindow();
this.setVisible(true);
}
public void setWindow() {
//ImageIcon icon = new ImageIcon("logo.png");
//this.setIconImage(icon.getImage());
ImageIcon icon = new ImageIcon("pic\\logo.png");
this.setIconImage(icon.getImage());
Dimension screenSize = getToolkit().getDefaultToolkit().getScreenSize();
screenSizeWidth = (int)screenSize.getWidth();
screenSizeHeight= (int)screenSize.getHeight();
windowWidth = this.getWidth();
windowHeight= this.getHeight();
this.setBounds((int)(screenSizeWidth-windowWidth)/2, (int)(screenSizeHeight-windowHeight)/2,windowWidth,windowHeight);
JLabel userName_label = new JLabel("姓名:");
JLabel passWord_label = new JLabel("密码:");
JLabel TipsInfo = new JLabel("请输入账号和密码:");
JLabel capStr = new JLabel("");
final JTextField user_field = new JTextField();
final JTextField capStr_field = new JTextField();
final JPasswordField pass_field = new JPasswordField();
JButton login_btn = new JButton("登录");
JButton regis_btn = new JButton("咨询");
TipsInfo.setBounds(15,0,300,50);
userName_label.setBounds(30, 50, 100, 50);
passWord_label.setBounds(30,80,100,50);
user_field.setBounds(30+50,50+15,125,25);
pass_field.setBounds(30+50,80+15,125,25);
login_btn.setBounds(125,180,80,40);
regis_btn.setBounds(25,180,80,40);
this.add(TipsInfo);
this.add(userName_label);
this.add(passWord_label);
this.add(user_field);
this.add(pass_field);
this.add(login_btn);
this.add(regis_btn);
regis_btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null,"如需帮助请联系作者"+"\n"+"LC","帮助",JOptionPane.QUESTION_MESSAGE);
}
});
login_btn.addActionListener(new ActionListener() {
int Hub;
int readHuB;
@Override
public void actionPerformed(ActionEvent e) {
//if(Hub == 0) --> ~~~~~~~此处验证码先行~~~~~~~
try {
if(user_field.getText().equals(userName) && pass_field.getText().equals(passWord)){
//此处调用下一个窗口并关闭当前窗口
setVisible(false);
systemMenu systemmenu = new systemMenu();
new Menu("主菜单");
//System.txt --> 0
Writer wr = new FileWriter("dataFiles\\System.txt");
wr.write(String.valueOf(Hub));
wr.close();
}else{
readTxt readHub = new readTxt();
readHuB = readHub.hub;
if (readHuB>50){
JOptionPane.showMessageDialog(null, "登陆失败,请检查账号和密码是否错误\n剩余机会:(0/3)请联系管理员", "Login", JOptionPane.ERROR_MESSAGE);
user_field.setEnabled(false); //阻止输入
}else {
Hub++;
File writeHub = new File("dataFiles\\System.txt");
BufferedWriter out = new BufferedWriter(new FileWriter(writeHub));
out.write(String.valueOf(Hub));
out.flush();
out.close();
System.out.println(readHuB);
switch (Hub) {
case 0:
break;
case 1:
JOptionPane.showMessageDialog(null, "登陆失败,请检查账号和密码是否错误\n剩余机会:(3/3)", "Login", JOptionPane.ERROR_MESSAGE);
break;
case 2:
JOptionPane.showMessageDialog(null, "登陆失败,请检查账号和密码是否错误\n剩余机会:(2/3)", "Login", JOptionPane.ERROR_MESSAGE);
break;
case 3:
JOptionPane.showMessageDialog(null, "登陆失败,请检查账号和密码是否错误\n剩余机会:(1/3)", "Login", JOptionPane.ERROR_MESSAGE);
break;
default:
JOptionPane.showMessageDialog(null, "登陆失败,请检查账号和密码是否错误\n剩余机会:(0/3)请联系管理员", "Login", JOptionPane.ERROR_MESSAGE);
break;
}
user_field.setText("");
pass_field.setText("");
}
}
} catch (IOException ioException) {
ioException.printStackTrace();
}
}
});
}
}
@[T