应用项目系统实践学习

本文档详细介绍了使用Eclipse进行Java项目开发的过程,包括创建窗口、设置图标和布局,以及如何导入和导出压缩包。在Eclipse中遇到的问题,如红色感叹号、空指针异常的解决方法也进行了说明,并探讨了监听器、组合框、列表框、菜单和布局管理器的应用。
摘要由CSDN通过智能技术生成

一级目录

二级目录

三级目录

第一部分3.5

使用 ecplise
语言 Java
1.安装jdk
2.解压eclipse并进行设置
3.安装mysql
4.安装mysql的前端软件navicat

1.1 创建一个窗口

目标下面展示一些 内联代码片

package sias;
import javax.swing.*;//导入窗口


public class MyFrame extends JFrame{//继承窗口类

	public MyFrame()//构造函数 
	{
		setTitle("我爱你中国");
		setSize(600,400);
		setVisible(true);//设置窗口可见性
		
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyFrame my1 = new MyFrame();
		//my1.show();
		my1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口正常关闭
	}

}

更换图标 设置流式布局

完成–>图片被放在标签上 标签被添加在内容窗格里,左上角有图片图标
截图2
在这里插入图片描述

下面展示一些 内联代码片

package sias;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Image;

import javax.swing.*;//导入窗口类
import javax.swing.ImageIcon;//导入图片类



public class MyFrame extends JFrame{//继承窗口类

	public MyFrame()//构造函数 
	{
		setTitle("我爱你中国");
		ImageIcon icon1 = new ImageIcon("image\\hx.jpg");//创建图片对象
		Image image1 = icon1.getImage();//创建image对象
		setIconImage(image1);//设置图片到窗口左上角
		
		JLabel label1 = new JLabel(icon1);//参数不能是图片类对象可以是图标
		Container c1 = getContentPane();//得到内容窗格
		c1.setLayout(new FlowLayout());//设置流式布局
		c1.add(label1);//添加标签
		
		setSize(600,400);
		setVisible(true);//设置窗口可见性
		
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyFrame my1 = new MyFrame();
		//my1.show();
		my1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口正常关闭
	}

}

1.2 创建窗口控件及子窗口

完成目标1
在这里插入图片描述

下面展示一些 内联代码片

package sias;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Image;

//导入图片类
import javax.swing.*;//导入窗口类



public class MyFrame extends JFrame{//继承窗口类
	
	//定义所需要的的控件
	JLabel labelname;
	JTextField textname;
	JLabel labeltall;
	JTextField tall1;
	JLabel labelweight;
	JTextField weight1;
	JLabel labelhome;
	JTextField home1;
	JLabel labelpwd;
	JPasswordField pwd1;
	JButton button1;//按钮
	
	
	public MyFrame()//构造函数 
	{
		setTitle("我爱你中国");
		ImageIcon icon1 = new ImageIcon("image\\hx.jpg");//创建图片对象
		Image image1 = icon1.getImage();//创建image对象
		setIconImage(image1);//设置图片到窗口左上角
		
		//JLabel label1 = new JLabel(icon1);//参数不能是图片类对象可以是图标
		Container c1 = getContentPane();//得到内容窗格
		c1.setLayout(new FlowLayout());//设置流式布局
		//c1.add(label1);//添加标签
		
		labelname = new JLabel("name");
		textname = new JTextField(15);//宽度为10
		
		labeltall = new JLabel("tall");
		tall1 = new JTextField(15);
		
		labelweight = new JLabel("weight");
		weight1 = new JTextField(15);
		
		labelhome = new JLabel("home");
		home1 = new JPasswordField(15);
		
		labelpwd = new JLabel("password");//创建密码标签
		pwd1 = new JPasswordField(15);
		
		button1 =new JButton("确定");
		//c1得到当前窗口内容窗格 用add函数添加到c1窗口上
		c1.add(labelname);
		c1.add(textname);
		c1.add(labeltall);
		c1.add(tall1);
		c1.add(labelweight);
		c1.add(weight1);
		c1.add(labelhome);
		c1.add(home1);
		c1.add(labelpwd);
		c1.add(pwd1);
		c1.add(button1);
		
		
		
		
		setSize(600,400);
		setVisible(true);//设置窗口可见性
		
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyFrame my1 = new MyFrame();
		//my1.show();
		my1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口正常关闭
	}

}

目标2 创建子窗口
在这里插入图片描述
下面展示一些 内联代码片

package sias;

import java.awt.Container;

import javax.swing.JLabel;
import javax.swing.JTextField;

public class MyFrame3 extends MyFrame{//定义MyFrame3为MyFrame的子类
	
	public MyFrame3() //区分父类和子类更改标签
	{
		setTitle("3窗口爱中国");
		Container c1 = getContentPane();
		c1.add(new JLabel("tall"));
		c1.add(new JTextField(10));
		
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyFrame3 f3 = new MyFrame3();//创建对象程序可以运行
	}

}


上课3.9日 如何用ecplise导入压缩包文档

0.1

File – Import --进入下图选择窗口,按着蓝色指示选择一下即可。

在这里插入图片描述
Select root directory 从根目录现在文件夹,一定要选择bin目录之上的文件夹
在这里插入图片描述
在这里插入图片描述

0.2 导入文件夹有红色感叹号

导致这部分的原因是因为jdk版本不适应,我的电脑安装的jdk是1.8版本,机房电脑jdk是1.7版本,需要重新配置一下。

注:2021-11这种项目明明方法错误,应以英文命名。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注:2021-11这种项目明明方法错误,应以英文命名。在这里插入图片描述

0.3 如何使用ecplise导出压缩包

复制项目,桌面建立文件夹,粘贴项目,压缩即可

0.4 空指针异常查找

运行后会出现此类错误提示,点解MyFrame2.java:32即可找到指针异常
在这里插入图片描述
指针异常锁定32行,有肯那个是c1异常或是textname异常,需要排除,从而找到异常。
在这里插入图片描述

0.5 ecplise设置注释操作

第二单元 这里从新编辑了和以上代码有稍微改动

2.1 监听器的应用

任务1

1. 点击用户名可以弹出子窗口
2. 给“确定”按钮增加监视器 import java.awt.event.*;

在这里插入图片描述




package sias1;

import javax.swing.*;

//import sias.MyStudent;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;



public class MyFrame1 extends JFrame{
	
	//定义需要用的控件
	JLabel labelname;
	JTextField textname;
	JLabel labelpwd;
	JPasswordField pwd1;
	JButton button1;
	JRadioButton rb1,rb2,rb3;
	ButtonGroup bg1;	
	
	public MyFrame1()
	{
		setTitle("登录管理系统主页");
		ImageIcon icon1 = new ImageIcon("image1\\kdy.jpg");
		Image image0 = icon1.getImage();
		setIconImage(image0);
			
		//得到布局窗格,设置流式布局
		Container c2 = getContentPane();
		c2.setLayout(new FlowLayout());	
		
		labelname = new JLabel("姓名");
		textname = new JTextField(10);
		labelpwd = new JLabel("密码");
		pwd1 = new JPasswordField(10);
		button1 = new JButton("确定");
		rb1 = new JRadioButton("学生");
		rb2 = new JRadioButton("老师");
		rb3 = new JRadioButton("管理员");
		bg1 = new ButtonGroup();//逻辑上的bg1,看不到,三个选择互相排斥,不加不排斥
		bg1.add(rb1);
		bg1.add(rb2);
		bg1.add(rb3);
		
		c2.add(labelname);
		c2.add(textname);
		c2.add(labelpwd);
		c2.add(pwd1);
		c2.add(rb1);//添加到内容唱歌上
		c2.add(rb2);
		c2.add(rb3);
		c2.add(button1);
		
		button1.addActionListener(new ActionListener()//给按钮增加监听器,监听器类写到括号里new ActionListener
		{
			public void actionPerformed(ActionEvent e) //创建actionPerformed函数
			//ActionEvent e动作事件,当我们点击按钮时, 监听器会捕捉到e
			{
				System.out.println("you press button");//点击按钮会输出your press button
				if (textname.getText().trim().equals("aaa")&& pwd1.getText().trim().equals("111")&&rb1.isSelected())
					//如果name文本框中得到文本,用trim去掉空格,得到文本判断是否是“abc”同时满足pwd框中的pwd是否等于111这个字符串
					//我们的目的对用户名和密码加以判断,所以加合适的代码,先得到name用户名,得到pwd的密码进行判断会弹出提示。
					//pwd1.getText为什么用删除,在java较新的版本中不建议使用getText,建议用getPassword这个函数,此处为了省事就用getText了
					//判断是否等于字符串不能用两个等号,字符串的相等要用equals只有对象相等才能用两个等号
				{
					System.out.println("your preare right user");//输出你是一个正确的用户
					
					//确认之后会弹出窗口3
					MyStudent ms = new MyStudent();
					ms.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口正常关闭
					ms.show();
				} 
				else if(textname.getText().trim().equals("222")&&pwd1.getText().trim().equals("222")&&rb2.isSelected())
				{
					System.out.println("请输出正确的用户");
					MyTeacher mt = new MyTeacher();
					mt.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
					mt.show();
					
				}
				else if(textname.getText().trim().equals("333")&&pwd1.getText().trim().equals("333")&&rb3.isSelected()) {
					System.out.println("your preare right user");
					MyAdmin ma = new MyAdmin();
					ma.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
					ma.show();			
					
				}
				
				
				else 
				{
					System.out.println("your prear error user");//错误的用户
				}
				
				
			}
			
		});
		
		
		
		setSize(600,400);
		setVisible(true);//设置页面可见性
		
	}
	
	

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyFrame1 m1 = new MyFrame1();
		m1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

}

		

在这里插入图片描述

2.2 组合框、列表框、菜单

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

package sias1;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class MyFrame2 extends JFrame {
	
	JLabel labelschool;
//	JTextField textschool;
	JComboBox combo1;//定义组合框
	JLabel labeldepart;
	JList list1;//列表框1l
	String[] schools= {"五道口职业技术学院","人民路职业技术学院","英才街18号职业技术学院","新东方职业技术学院"};//定义学校数组
	String[] departs= {"计算机系","外语系","法律系","美食系"};//定义系别对应字符
	JMenu file;//菜单
	JMenu edit;//增加编辑菜单
	JMenu layout;//增加格式菜单
	JMenuItem itemopen,itemclose,itemsave,itemcut,itemcopy,itempaste,itemwerap,itemfont,itemparagraph;//菜单项 打开关闭保存 
	JMenuBar bar1;//对应菜单条
	JButton button1;
	
	
	
	public MyFrame2() {
		setTitle("我的学校");
		setSize(600,400);

		labelschool=new JLabel("学校");
//		textschool = new JTextField(10);
		labeldepart=new JLabel("系别");
		combo1 = new JComboBox(schools);
		list1=new JList(departs);
		button1 = new JButton("确定");
		
		
		
		Container c2=getContentPane();
		c2.setLayout(new FlowLayout());//设置流式布局

		c2.add(labelschool);
//		c2.add(textschool);
		c2.add(combo1);
		c2.add(labeldepart);
		c2.add(list1);
		
		list1.setVisibleRowCount(1);//让人们可以看到的行数
		JScrollPane jp1 = new JScrollPane(list1);//使用滚动面板包含list1
		
		c2.add(jp1);
		c2.add(button1);
		
		button1.addActionListener(new ActionListener(){

			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				String schoolname1 = (String) combo1.getSelectedItem();//getSelectedInde()得到序号,序号表从0开始
				//getSelectedItem()得到选择项,返回值Object类型,使用string对染进行强制转换
				String departname1 = (String)list1.getSelectedValue();//getSelectedValue()取得所选择一项
		
				System.out.println(schoolname1);
				System.out.println(departname1);
			}
			
			
		});
		
		
		
		file = new JMenu("文件");
		itemopen = new JMenuItem("打开");
		itemclose = new JMenuItem("关闭");
		itemsave = new JMenuItem("保存");
		edit = new JMenu("编辑");
		itemcut = new JMenuItem("剪切");
		itemcopy = new JMenuItem("复制");
		itempaste = new JMenuItem("粘贴");
		layout = new JMenu("格式");
		itemwerap = new JMenuItem("自动换行");
		itemfont = new JMenuItem("字体");
		itemparagraph = new JMenuItem("段落");
		
		bar1 = new JMenuBar();//创建菜单条
		
		//添加关系 菜单项添加到菜单中,菜单加入菜单条中,菜单条方到窗口上
		file.add(itemopen);
		file.add(itemclose);
		file.add(itemsave);
		edit.add(itemcut);
		edit.add(itemcopy);
		edit.add(itempaste);
		layout.add(itemwerap);
		layout.add(itemfont);
		layout.add(itemparagraph);
		bar1.add(file);
		bar1.add(edit);
		bar1.add(layout);
		setJMenuBar(bar1);
		
		setVisible(true);
		
	}
	
	
	

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyFrame2 mf2 = new MyFrame2();
		mf2.show();

	}

}

2.3 布局管理器

完成图片标准样本

在这里插入图片描述
实际完成样本
问题1:没有设置监听器
问题2:学生管理窗口2 是否要继承,继承那个,如果继承xxxx一些问题
问题3:学生管理窗口2 代码不放入里面了
在这里插入图片描述

package sias1;

import javax.swing.*;



//import sias.MyStudent;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;



public class MyFrame1 extends JFrame{
	
	//定义需要用的控件
	
	JLabel labelname;
	JTextField textname;
	JLabel labelpwd;
	JPasswordField pwd1;
	JButton button1;
	JButton button2;
	JRadioButton rb1,rb2,rb3;
	ButtonGroup bg1;	
	
	public MyFrame1()
	{
		setTitle("登录管理系统主页");
		ImageIcon icon1 = new ImageIcon("image1\\kdy.jpg");
		Image image0 = icon1.getImage();
		setIconImage(image0);
		
		setSize(400,200);
		
		GridBagLayout gb1 = new GridBagLayout();
		GridBagConstraints gbc = new GridBagConstraints();
			
		//得到布局窗格,设置流式布局
		Container c2 = getContentPane();
//		c2.setLayout(new FlowLayout());	
		c2.setLayout(gb1);//采用网个包布局

		

		labelname = new JLabel("姓名");
		textname = new JTextField(10);	
		labelpwd = new JLabel("密码");
		pwd1 = new JPasswordField(10);
		button1 = new JButton("确定");
		button2 = new JButton("取消");
		rb1 = new JRadioButton("学生");
		rb2 = new JRadioButton("老师");
		rb3 = new JRadioButton("管理员");
		bg1 = new ButtonGroup();//逻辑上的bg1,看不到,三个选择互相排斥,不加不排斥
		bg1.add(rb1);
		bg1.add(rb2);
		bg1.add(rb3);
		
		gbc.gridx = 1;
		gbc.gridy = 1;
		gbc.gridheight = 1;
		gbc.gridwidth = 1;
		gbc.weightx = 1;//权重
		gbc.gridheight =1;
		gb1.setConstraints(labelname, gbc);		
		c2.add(labelname);
		
		gbc.gridx = 2;
		gbc.gridy = 1;
		gbc.gridheight = 1;
		gbc.gridwidth = 1;
		gbc.weightx = 1;//权重
		gbc.gridheight =1;
		gb1.setConstraints(textname, gbc);
		c2.add(textname);
		
		
		gbc.gridx = 3;
		gbc.gridy = 1;
		gbc.gridheight = 1;
		gbc.gridwidth = 1;
		gbc.weightx = 1;//权重
		gbc.gridheight = 1;
		gb1.setConstraints(labelpwd, gbc);	
		c2.add(labelpwd);

		gbc.gridx = 4;
		gbc.gridy = 1;
		gbc.gridheight = 1;
		gbc.gridwidth = 1;
		gbc.weightx = 1;//权重
		gbc.gridheight =1;
		gb1.setConstraints(pwd1, gbc);
		c2.add(pwd1);
		
		gbc.gridx = 2;
		gbc.gridy = 2;
		gbc.gridheight = 1;
		gbc.gridwidth = 1;
		gbc.weightx = 1;//权重
		gbc.gridheight =1;
		gb1.setConstraints(rb1, gbc);
		c2.add(rb1);//添加到内容唱歌上
		
		gbc.gridx = 3;
		gbc.gridy = 2;
		gbc.gridheight = 1;
		gbc.gridwidth = 1;
		gbc.weightx = 1;//权重
		gbc.gridheight =1;
		gb1.setConstraints(rb2, gbc);
		c2.add(rb2);
		
		gbc.gridx = 4;
		gbc.gridy = 2;
		gbc.gridheight = 1;
		gbc.gridwidth = 1;
		gbc.weightx = 1;//权重
		gbc.gridheight =1;
		gb1.setConstraints(rb3, gbc);
		c2.add(rb3);
		
		gbc.gridx = 2;
		gbc.gridy = 3;
		gbc.gridheight = 1;
		gbc.gridwidth = 1;
		gbc.weightx = 1;//权重
		gbc.gridheight =1;
		gb1.setConstraints(button1, gbc);
		c2.add(button1);
		
		gbc.gridx = 3;
		gbc.gridy = 3;
		gbc.gridheight = 1;
		gbc.gridwidth = 1;
		gbc.weightx = 1;
		gbc.gridheight =1;
		gb1.setConstraints(button2, gbc);
		c2.add(button2);
		
		button1.addActionListener(new ActionListener()//给按钮增加监听器,监听器类写到括号里new ActionListener
		{
			public void actionPerformed(ActionEvent e) //创建actionPerformed函数
			//ActionEvent e动作事件,当我们点击按钮时, 监听器会捕捉到e
			{
				System.out.println("you press button");//点击按钮会输出your press button
				if (textname.getText().trim().equals("aaa")&& pwd1.getText().trim().equals("111")&&rb1.isSelected())
					//如果name文本框中得到文本,用trim去掉空格,得到文本判断是否是“abc”同时满足pwd框中的pwd是否等于111这个字符串
					//我们的目的对用户名和密码加以判断,所以加合适的代码,先得到name用户名,得到pwd的密码进行判断会弹出提示。
					//pwd1.getText为什么用删除,在java较新的版本中不建议使用getText,建议用getPassword这个函数,此处为了省事就用getText了
					//判断是否等于字符串不能用两个等号,字符串的相等要用equals只有对象相等才能用两个等号
				{
					System.out.println("your preare right user");//输出你是一个正确的用户
					
					//确认之后会弹出窗口3
					MyStudent ms = new MyStudent();
					ms.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口正常关闭
					ms.show();
				} 
				else if(textname.getText().trim().equals("222")&&pwd1.getText().trim().equals("222")&&rb2.isSelected())
				{
					System.out.println("请输出正确的用户");
					MyTeacher mt = new MyTeacher();
					mt.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
					mt.show();
					
				}
				else if(textname.getText().trim().equals("333")&&pwd1.getText().trim().equals("333")&&rb3.isSelected()) {
					System.out.println("your preare right user");
					MyAdmin ma = new MyAdmin();
					ma.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
					ma.show();			
					
				}
				
				
				else 
				{
					System.out.println("your prear error user");//错误的用户
				}
				
				
			}
			
		});
		
		
		

		setVisible(true);//设置页面可见性
		
	}
	
	

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyFrame1 mf1 = new MyFrame1();
		mf1.show();
		mf1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值