Java+Swing+Mysql学生成绩管理系统(DAY 9)登陆界面,java系统架构师面试

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

}



public static void main(String[] args){

    new LoginView();

}



public JTextField getNameTxd() {

    return nameTxd;

}



public JPasswordField getPwdFiled() {

    return pwdFiled;

}

}




[]( )LoginHandler

------------------------------------------------------------------------------



package handler;

import view.*;

import javax.swing.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

public class LoginHandler extends KeyAdapter implements ActionListener{

private LoginView loginView;

public LoginHandler(LoginView loginView){

    this.loginView=loginView;

}



@Override

public void actionPerformed(ActionEvent e){

    JButton jButton=(JButton) e.getSource();

    String text=jButton.getText();

    if("重置".equals(text)){

        loginView.getNameTxd().setText("");//获取NameTxd上的用户名并置空

        loginView.getPwdFiled().setText("");//获取PwdFiled上的密码并置空

    }else if("登录".equals(text)){

        login();

    }

}



private void login() {

    String user=loginView.getNameTxd().getText();//获取NameTxd上的用户名

    char []chars=loginView.getPwdFiled().getPassword();//获取PwdFiled上的密码

    String pwd=new String(chars);//转为字符串型

    System.out.println(user+":"+pwd);

    //查询database,验证

    boolean flag=true;

    if(flag){

    	//如果登录成功在这里进入主界面并销毁登录界面

    	new MainView();

    	loginView.dispose();



    }else{

        JOptionPane.showMessageDialog(loginView,"用户名密码错误");

    }

}



@Override

//键盘监听,按下回车键

public void keyPressed(KeyEvent e) {

    if(KeyEvent.VK_ENTER==e.getKeyCode()) {

        login();

    }

}

}




[]( )MainTable

---------------------------------------------------------------------------



package view;

import java.awt.BorderLayout;

import java.awt.Container;

import java.awt.FlowLayout;

import java.net.URL;

import java.util.Vector;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTextField;

import ext.MainViewTable;

import ext.MainViewTableModel;

import util.DimensionUtil;

public class MainView extends JFrame{

JPanel northPanel=new JPanel(new FlowLayout(FlowLayout.LEFT));//JPanel默认流布局,组件居左

JButton addBtn=new JButton("增加");

JButton updataBtn=new JButton("修改");

JButton delBtn=new JButton("删除");

JTextField searchTxt=new JTextField(15);

JButton searchBtn=new JButton("查询");



JPanel southPanel=new JPanel(new FlowLayout(FlowLayout.RIGHT));//组件居右

JButton preBtn=new JButton("上一页");

JButton nextBtn =new JButton("下一页");



//创建一个MainViewTable对象

MainViewTable mianViewTable=new MainViewTable();



//构造方法

public MainView() {

	

	super("主界面-学生成绩管理系统");

	Container contentPane=getContentPane();

	

	//放置北边的组件

	layoutNorth(contentPane);

	//放置中间的组件

	layoutCenter(contentPane);

	//放置南边的组件

	layoutSouth(contentPane);

	//基础设置

    init();

}



private void layoutCenter(Container contentPane) {

	//暂时还没调用数据库,所以把主面板上内容写死,创建一个二维数组存放data

	Vector<Vector<Object>> data = new Vector<>();

    Vector<Object> rowVector1 = new Vector<>();

    rowVector1.addElement("1");

    rowVector1.addElement("张三");

    rowVector1.addElement("1");

    rowVector1.addElement("湖南");



    Vector<Object> rowVector2 = new Vector<>();

    rowVector2.addElement("2");

    rowVector2.addElement("李四");

    rowVector2.addElement("2");

    rowVector2.addElement("北京");



    Vector<Object> rowVector3 = new Vector<>();

    rowVector3.addElement("3");

    rowVector3.addElement("王五");

    rowVector3.addElement("3");

    rowVector3.addElement("上海");



    data.addElement(rowVector1);

    data.addElement(rowVector2);

    data.addElement(rowVector3);

    

    //自定义的MainViewTableModel

	MainViewTableModel mainViewTableModel=MainViewTableModel.assembleModel(data);

	//将Table与TableModel关联

	mianViewTable.setModel(mainViewTableModel);

	//设置渲染方式

	mianViewTable.renderRule();

	

	 JScrollPane jScrollPane = new JScrollPane(mianViewTable);

	 contentPane.add(jScrollPane,BorderLayout.CENTER);

}



private void layoutSouth(Container contentPane) {

	southPanel.add(preBtn);

	southPanel.add(nextBtn);

	contentPane.add(southPanel,BorderLayout.SOUTH);

}





private void layoutNorth(Container contentPane) {

	northPanel.add(addBtn);

	northPanel.add(updataBtn);

	northPanel.add(delBtn);

	northPanel.add(searchTxt);

	northPanel.add(searchBtn);

	contentPane.add(northPanel,BorderLayout.NORTH);

}



private void init() {

	//设置窗口图片

    URL imgUrl=LoginView.class.getClassLoader().getResource("LoginView.jpg");

    setIconImage(new ImageIcon(imgUrl).getImage());

    //设置窗口基本参数

    setBounds(DimensionUtil.getBounds());

    //设置窗体完全充满整个屏幕

    setExtendedState(JFrame.MAXIMIZED_BOTH);

    

    setDefaultCloseOperation(EXIT_ON_CLOSE);

    setLocationRelativeTo(null);

    setResizable(true);

    setVisible(true);

}



public static void main(String[] args) {

	// TODO Auto-generated method stub

	

}

}




[]( )MainViewTable

-------------------------------------------------------------------------------



package ext;

import java.awt.Color;

import java.awt.Font;

import java.util.Vector;

import javax.swing.JTable;

import javax.swing.ListSelectionModel;

import javax.swing.table.JTableHeader;

import javax.swing.table.TableColumn;

public class MainViewTable extends JTable{

public MainViewTable() {

	//设置表头的属性(字体,颜色)

    JTableHeader tableHeader = getTableHeader();

    tableHeader.setFont(new Font(null, Font.BOLD, 16));

    tableHeader.setBackground(Color.pink);

    //设置表格体

    setFont(new Font(null, Font.PLAIN, 14));

    setBackground(Color.WHITE);

    setGridColor(Color.BLACK);//设置表格分割线为纯黑色

    setRowHeight(30);//设置行高

    //设置是否可以多行选择(默认就是多行选择)

    getSelectionModel().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);



}







public void renderRule() {

	//设置每一列的渲染方式

    Vector<String> columns=MainViewTableModel.getColumns();//获取每一列

    MainViewCellRender render =new MainViewCellRender();//设置渲染方式

    for(int i=0;i<columns.size();i++){

        TableColumn column=getColumn(columns.get(i));

        column.setCellRenderer(render);

        if(i==0){//设置第一列的宽度

            column.setPreferredWidth(30);

            column.setResizable(false);//设置第一列的宽度不可改变

        }

    }

}



public static void main(String[] args) {

	// TODO Auto-generated method stub



}

}




[]( )MainViewCellRender

------------------------------------------------------------------------------------



package ext;

import java.awt.Color;

import java.awt.Font;

import java.util.Vector;

import javax.swing.JTable;

import javax.swing.ListSelectionModel;

import javax.swing.table.JTableHeader;

import javax.swing.table.TableColumn;

public class MainViewTable extends JTable{

public MainViewTable() {

	//设置表头的属性(字体,颜色)

    JTableHeader tableHeader = getTableHeader();

    tableHeader.setFont(new Font(null, Font.BOLD, 16));

    tableHeader.setBackground(Color.pink);

    //设置表格体

    setFont(new Font(null, Font.PLAIN, 14));

    setBackground(Color.WHITE);

    setGridColor(Color.BLACK);//设置表格分割线为纯黑色

    setRowHeight(30);//设置行高

    //设置是否可以多行选择(默认就是多行选择)

    getSelectionModel().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);



}







public void renderRule() {

	//设置每一列的渲染方式

    Vector<String> columns=MainViewTableModel.getColumns();//获取每一列

    MainViewCellRender render =new MainViewCellRender();//设置渲染方式

    for(int i=0;i<columns.size();i++){

        TableColumn column=getColumn(columns.get(i));

        column.setCellRenderer(render);

        if(i==0){//设置第一列的宽度

            column.setPreferredWidth(30);

            column.setResizable(false);//设置第一列的宽度不可改变

        }

    }

}



public static void main(String[] args) {

	// TODO Auto-generated method stub



}

}




[]( )MainViewTableModel

------------------------------------------------------------------------------------



package ext;

import java.util.Vector;

import javax.swing.table.DefaultTableModel;

public class MainViewTableModel extends DefaultTableModel{

//定义属性列(表头)

static Vector<String> columns=new Vector<>();

static{

    columns.addElement("编号");

    columns.addElement("姓名");

    columns.addElement("学号");

    columns.addElement("家乡");

}

//构造函数私有化防止外部重写对象

private MainViewTableModel(){

    super(null,columns);//初始状态表格体为空,表头固定

}



private static MainViewTableModel mainViewTableModel=new MainViewTableModel();

public static MainViewTableModel assembleModel(Vector<Vector<Object>> data){

	mainViewTableModel.setDataVector(data,columns);

    return mainViewTableModel;

}



public static Vector<String> getColumns() {

    return columns;

}



@Override

public boolean isCellEditable(int row, int column) {

    return false;//false不可编辑

}

}

总结

对于面试,一定要有良好的心态,这位小伙伴面试美团的时候没有被前面阿里的面试影响到,发挥也很正常,也就能顺利拿下美团的offer。
小编还整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家,

在这里插入图片描述

在这里插入图片描述

最后感谢大家的支持,希望小编整理的资料能够帮助到大家!也祝愿大家都能够升职加薪!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
return mainViewTableModel;

}



public static Vector<String> getColumns() {

    return columns;

}



@Override

public boolean isCellEditable(int row, int column) {

    return false;//false不可编辑

}

}

总结

对于面试,一定要有良好的心态,这位小伙伴面试美团的时候没有被前面阿里的面试影响到,发挥也很正常,也就能顺利拿下美团的offer。
小编还整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家,

[外链图片转存中…(img-1sbvpQhq-1713539705204)]

[外链图片转存中…(img-xsIv5HV7-1713539705204)]

最后感谢大家的支持,希望小编整理的资料能够帮助到大家!也祝愿大家都能够升职加薪!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-ljmYdYjf-1713539705204)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 26
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值