学生成绩管理系统(第二部分)

首先,我先说一下我这两天困扰我的问题:对于同一个window下的两个面板,该如何控制它的大小。一开始我使用的是GridLayout,但是发现,两个Panel的大小是一样的,平均分配。所以,最后我将布局清空,直接用坐标去实现面板应该出现的位置。

1.查询学生信息

在这里插入图片描述

package llxy.project.select;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import llxy.project.Tools.GuiTools;

public class SelectStuMessage extends JFrame{
	public static void main(String[] args) {
		new SelectStuMessage();
	}
	public SelectStuMessage(){
		this.setSize(720,400);
		this.setTitle("查询学生信息");
		this.setLayout(null);
		JPanel jp1 = new JPanel();
		JButton jb1= new JButton("按学号查询");
		JTextField jt1 = new JTextField("",5);
		JButton jb2= new JButton("按姓名查询");
		JTextField jt2 = new JTextField("",5);
		JButton jb3= new JButton("按班级查询");
	    JTextField jt3 = new JTextField(5);
		JButton jb4 =new JButton("按课程名称查询");
		JComboBox<String> comboBox = new JComboBox<String>();
		//为下拉列表添加选项
		comboBox.addItem("语文");
		comboBox.addItem("数学");
		comboBox.addItem("英语");
		文本域
		final JTextArea jt = new JTextArea(60,60);
		JScrollPane jp2=new JScrollPane(jt);
		jt.setEditable(false);
		this.add(jp2,BorderLayout.CENTER);
		
		//添加组件
		jp1.add(jb1);
		jp1.add(jt1);
		jp1.add(jb2);
		jp1.add(jt2);
		jp1.add(jb3);
		jp1.add(jt3);
		jp1.add(jb4);
		jp1.add(comboBox);
		//设置面板的大小
		jp1.setBounds(0, 0,700,50);
		jp2.setBounds(0, 50, 700, 350);
		jp1.setBackground(Color.lightGray);
		this.add(jp1);
		this.add(jp2);
		
		jb1.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				BySno sno = new BySno();
				
			}
		});
		jb2.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				ByName bn = new ByName();
				
			}
		});
		jb3.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				ByClass bc = new ByClass();				
			}
		});
		GuiTools.center(this);
		GuiTools.setTitleImage(this,"1.jpg");
		this.setVisible(true);
		
	}
}

2.学生信息管理(增删改)

在这里插入图片描述

package llxy.project.view;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import llxy.project.Tools.GuiTools;
import llxy.project.play.AddStuMessage;
import llxy.project.play.AlterStuMessage;
import llxy.project.play.DeleteStuMessage;

public class DealStuMessage extends JFrame{
	public static void main(String[] args) {
		new DealStuMessage();
	}
	public DealStuMessage(){
		this.setSize(500,600);
		//设置背景图片
		JPanel bg = new JPanel();
		ImageIcon img = new ImageIcon("qq.jpg");
		JLabel j = new JLabel(img);//图片放在标签
		j.setBounds(0, 0,img.getIconHeight(), img.getIconWidth());
		bg.add(j);
		this.add(bg);
	
		 JPanel panel = new JPanel(); //创建一个面板 存储组件
		 JButton btn1 = new JButton("1.添加数据");
		 JButton btn2 = new JButton("2.删除数据");
		 JButton btn3 = new JButton("3.修改数据");
		 JButton btn4 = new JButton("     退出        ");

		 panel.add(btn1);
		 btn1.setBackground(Color.GREEN);
		 panel.add(btn2);
		 btn2.setBackground(Color.green);
		 panel.add(btn3);
		 btn3.setBackground(Color.green);
		 panel.add(btn4);
		 btn4.setBackground(Color.green);
	
		 panel.setBackground(Color.lightGray);
		 this.add(panel,BorderLayout.SOUTH);
		 GuiTools.center(this);//居中
		 GuiTools.setTitleImage(this,"1.jpg");//图标
		 this.setVisible(true);
		 
		 btn1.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				AddStuMessage add =new AddStuMessage();
			}
		});
		 btn2.addActionListener(new ActionListener() {
				
				@Override
				public void actionPerformed(ActionEvent e) {
					DeleteStuMessage add =new DeleteStuMessage();
				}
			});
		 btn3.addActionListener(new ActionListener() {
				
				@Override
				public void actionPerformed(ActionEvent e) {
					AlterStuMessage add =new AlterStuMessage();
				}
			});
		 btn4.addActionListener(new ActionListener() {
				
				@Override
				public void actionPerformed(ActionEvent e) {
					dispose();
				}
			});
	}
	
}

#3.实现对于窗口只关闭当前的窗口

遇到了一个问题,当我连续打开两个窗口的时候,例如:添加数据的窗口,当我点击右上角的关闭时候,会发现这个程序全部结束。当然,我只是想要关闭当前的窗口。因此,在这里提出我的解决方法:
1.关闭当前窗体不能使用(这里是通过右上角的关闭图标)setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE),要使用setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
2.如果通过按钮(JButton)关闭的时候,关闭当前窗体使用的是dispose();,关闭整个窗体时候使用exit(0).在这里插入图片描述
感谢你看到这里,请点个赞吧!支持一下哦!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值