这里写目录标题
一级目录
二级目录
三级目录
第一部分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);//设置窗口正常关闭
}
}
更换图标 设置流式布局
完成–>图片被放在标签上 标签被添加在内容窗格里,左上角有图片图标
下面展示一些 内联代码片
。
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);
}
}