先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
正文
}
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)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!