JAVA程序设计(14.3)----- 图书馆管理系统 初步设计 界面篇~借书目录查看窗口,新书添加窗口

1.就地实例化,表格,表格滚动条,有滚动条自动出现抬头,表格model 2.新增窗口,上下调节的输入框,这种输入框中的数据获取方法,输入框部件设置,重置输入框内容

注意与主窗口通用一个BookManager……刚开始就因为在此窗口new了一个manager弄死加不进去……还不会报错…………

1 的代码先是主窗口   可以显示所有藏书 按钮2个 新增和删除  只做好了新增的

package com.lovo.ui;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.DefaultTableModel;

import com.lovo.BookManager.Book;
import com.lovo.BookManager.BookManager;
/**
 * 租赁图书查看界面
 * @author Abe
 */
@SuppressWarnings("serial")
public class MyTable extends JFrame {
	private BookManager manager = new BookManager();
	private JTable bookTabel;
	private String[] columnNames = { "编号", "书名", "价格", "状态", "借出日期", "借出次数" };

	private JPanel myPanel = new JPanel();
	private JButton newButton;
	private JButton resectButton;

	/**
	 * 构造器,初始化
	 */
	public MyTable() {
		this.setSize(600, 400);
		this.setResizable(false);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setLocationRelativeTo(null);

		initComponents();
	}

	/**
	 * 方法:获得该类使用的manager
	 * @return
	 */
	public BookManager getBookManager(){
		return manager;
	}

	/**
	 * 方法:获得manager中说有书的属性,保存在Object[][]中
	 */
	public void refreshTableModel(){
		if (bookTabel != null) {
			List<Book> list = manager.findAll();
			Object[][] date = new Object[list.size()][columnNames.length];
			for (int i = 0; i < list.size(); i++) {
				Book temp = list.get(i);
				date[i][0] = temp.getIsbn();
				date[i][1] = temp.getName();
				date[i][2] = temp.getPrice();
				date[i][3] = temp.isLended() ? "借出" : "未借出";
				date[i][4] = temp.getLendDate();
				date[i][5] = temp.getCounter();
			}
			// 创造一个匿名内部类 就地实例化里面的方法 来设置表格的模型 并将数据放入表格
			bookTabel.setModel(new DefaultTableModel(date, columnNames) {
				@Override
				public boolean isCellEditable(int row, int colum) {
					return false;
				}
			});
		}
	}

	public void initComponents() {
		bookTabel = new JTable();// JTable 表格
		bookTabel.getTableHeader().setReorderingAllowed(false);// 设置表头不允许重新排列

		refreshTableModel();

		JScrollPane jsp = new JScrollPane(bookTabel);	//不是新增一个这货,直接在new里添加要修饰的表格
														//将表格加上滚动条 保存在jsp
		this.add(jsp, BorderLayout.CENTER);				//将jsp放入 窗口中间区域

		newButton = new JButton("新增");
		newButton.addActionListener(new ActionListener() {	//就地实例化的监听器
		@Override
			public void actionPerformed(ActionEvent e) {
				if(e.getSource() == newButton){
					new AddBookDialog(MyTable.this).setVisible(true);	//把自己传给新增窗口,新增窗口设置成可见
				}
			}
		});
		resectButton = new JButton("删除");

		myPanel.add(newButton);
		myPanel.add(resectButton);
		this.add(myPanel, BorderLayout.SOUTH);
	}

	//main方法 主窗口可见 设置UI为和现在的系统一样  throws为 系统自动生成……
	public static void main(String[] args) throws ClassNotFoundException,
			InstantiationException, IllegalAccessException,
			UnsupportedLookAndFeelException {
		UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		new MyTable().setVisible(true);
	}
}

2.新增窗口的代码

package com.lovo.ui;

import java.awt.Component;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JSpinner;
import javax.swing.JTextField;
import javax.swing.SpinnerModel;
import javax.swing.SpinnerNumberModel;
import javax.swing.UIManager;

import com.lovo.BookManager.Book;
/**
 * 类:新增窗口
 * @author Abe
 */
@SuppressWarnings("serial")
public class AddBookDialog extends JDialog { //用JDialog不用JFrame 可以设置Modal固定焦点在此窗口
	private JLabel[] hint = new JLabel[3];
	private static String[] str = {"编号","书名","日租金"};
	private JTextField newIsdn;
	private JTextField newName;
	private JSpinner newPrice;
	private JButton addButton;
	private JButton resetButton;
	private MyTable table;

	/**
	 * 构造器
	 * @param table
	 */
	public AddBookDialog(MyTable table){
		this.table = table;
		this.setModal(true);
		this.setSize(400,400);
		this.setResizable(false);
		this.setLocationRelativeTo(null);
		this.setLayout(null);
		this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);

		inisComponents();
	}

	/**
	 * 方法:初始化构件
	 */
	private void inisComponents() {
		for(int i = 0 ; i < hint.length ; i++){
			hint[i] = new JLabel(str[i]);
			hint[i].setBounds(50 , 100 + 60 * i , 80 , 50);
			this.add(hint[i]);
		}

		newIsdn = new JTextField();
		newIsdn.setBounds(130, 110, 200, 30);
		this.add(newIsdn);

		newName = new JTextField();
		newName.setBounds(130, 170, 200, 30);
		this.add(newName);

		SpinnerModel sModel = new SpinnerNumberModel(1.0, 0.1, 5.0, 0.1);
		newPrice = new JSpinner(sModel);
		newPrice.setBounds(130, 230, 200,30);
		this.add(newPrice);

		addButton = new JButton("新增");
		addButton.setBounds(100, 300, 70, 30);
		addButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				Object obj = e.getSource();
				if(obj == addButton){				//价格调整标签
					String isdn = newIsdn.getText();
					String name = newName.getText();
					String pricestr = String.format("%.1f", newPrice.getModel().getValue());
					double price =Double.parseDouble(pricestr);
					table.getBookManager().add(new Book(isdn,name,price));
					table.refreshTableModel();

					AddBookDialog.this.dispose();
				}
			}
		});
		this.add(addButton);

		resetButton = new JButton("重置");
		resetButton.setBounds(230, 300, 70, 30);
		resetButton.addActionListener(new ActionListener() {	//就地实例化 按键触发事件 重置
			@Override
			public void actionPerformed(ActionEvent e) {
				Object obj = e.getSource();
				if(obj == resetButton){
					for(Component c : getContentPane().getComponents()) { 	//最后放工具包
						com.lovo.MyUtil.resetComponent(c);					//这里调用了重置工具
					}
				}
			}
		});
		this.add(resetButton);

		//统一设置格式 容器内还有容器的,不会改变字体
		Font font = new Font("微软雅黑", Font.PLAIN, 14);
		for (Component c : this.getContentPane().getComponents()) {
			c.setFont(font);
		}
	}

	public static void main(String[] args)  throws Exception{
		UIManager.setInstalledLookAndFeels(UIManager.getInstalledLookAndFeels());
		new AddBookDialog(null).setVisible(true);
	}
}

3.WOOO 工具包

package com.lovo;

import java.awt.Component;

import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JPasswordField;
import javax.swing.JSpinner;
import javax.swing.JTextField;
/**
 * WOOO计划包
 * @author Abe
 */
public class MyUtil {
	private MyUtil(){
	}
	/**
	 * 方法:自动匹配类型初始化 输入框
	 * @param c
	 */
	public static void resetComponent (Component c){
		if(c instanceof JTextField){				//文字框
			((JTextField) c).setText("");
		}else if(c instanceof JPasswordField){		//密码框
			((JPasswordField) c).setText("");
		}else if(c instanceof JCheckBox){			//复选框
			((JCheckBox) c).setSelected(false);
		}else if(c instanceof JComboBox<?>){		//下拉框
			((JComboBox<?>) c).setSelectedIndex(0);
		}else if(c instanceof JSpinner){			//不知道什么框,有上下调整箭头的
			((JSpinner)c).setValue(0);
		}
	}
}
时间: 2024-12-28 20:23:32

JAVA程序设计(14.3)----- 图书馆管理系统 初步设计 界面篇~借书目录查看窗口,新书添加窗口的相关文章

JAVA程序设计(14.1)----- 图书馆管理系统 初步设计 内部功能篇

首先绘制思维导图.右下的user临时无论先-- 先做Book.抽象化属性,核心功能. 然后是绘制BookManager的主要功能 然后直接导出到Eclipse进行改动调整,完毕功能的内部结构例如以下: package com.lovo.BookManager; import java.sql.Date; import java.text.SimpleDateFormat; /** * @author Abe * @version 1.0 * @created 05-十一月-2011 15:58:

JAVA程序设计(14)----- 图书馆管理系统 初步设计

首先绘制思维导图,右下的user暂时不管先-- 先做Book,抽象化属性,核心功能.然后是绘制BookManager的主要功能 然后直接导出到Eclipse进行修改调整,完成功能的内部结构如下: package com.lovo.BookManager; import java.sql.Date; import java.text.SimpleDateFormat; /** * @author Abe * @version 1.0 * @created 05-十一月-2011 15:58:35

Java小项目之:图书馆管理系统!有借有还再借不难!

Java小项目之:图书馆管理系统!今天给大家分享的java小项目是图书馆管理系统.这个图书馆管理系统是很完善的,包括书籍信息录入.借阅者信息.书籍类别添加.新书订购等等功能.和现实生活中的图书馆管理系统没什么两样,毫不夸张的说,你只要学会了今天我分享的这个小项目,以后自己创建一个图书馆管理系统是没一点问题的.按照惯例先上图: 部分代码展示:public class BookLoginIFrame extends JFrame { private class BookResetAction imp

Week14《Java程序设计》第14次作业总结

Week14<Java程序设计>第14次作业总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结与数据库相关内容. 2. 使用数据库技术改造你的系统 2.1 简述如何使用数据库技术改造你的系统.要建立什么表?截图你的表设计. 答:建立用户表,图书馆的图书表. 2.2 系统中使用到了JDBC中什么关键类? 答:使用到PreparedStatement,Connection,ResultSet,Statement. 2.3 截图数据库相关模块的关键代码.关键行需要加注释. 3

南邮JAVA程序设计实验1 综合图形界面程序设计

南邮JAVA程序设计实验1  综合图形界面程序设计 实验目的: 学习和理解JAVA SWING中的容器,部件,布局管理器和部件事件处理方法.通过编写和调试程序,掌握JAVA图形界面程序设计的基本方法. 实验内容: 设计和编写一个用于将人民币转换为等值的美元的程序,界面要求可以输入人民币的金额并可以得到转换后的结果.(每100美元等值买入人民币数:619.72) 实验代码: import java.awt.*; import java.awt.event.*; import java.math.*

java小系统 数据库 图书馆

图书管理系统                          目录 第一章 研究前提................................................................................1 第二章 系统分析................................................................................3 第三章 数据库分析..........................

201621123031 《Java程序设计》第12周学习总结

作业12-流与文件 1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 在Java中的java.io包中定义了许多类专门负责处理各种方式的输入与输出.其中,所有输入流类都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类,而所有输出流类都是抽象类OutputStream(字节输出流)或抽象类Writer(字符输出流)的子类. 1.输入流 InputStream类的层次结构 Reader类的层次结构 2.输出流 OutputSt

JavaWeb学习入门之——图书馆管理系统开发(Hibernate学习1)

最近看了看JavaWeb的书籍,才感觉到大二时候学的JavaWeb才仅仅只是个入门.最尴尬的当初还没咋学一直在看.NET,现在看起来JavaWeb,各种框架各种头疼啊.看了几个例子之后觉得,还是自己动手做个项目试试.边做边学才能学的快一点.做的时候用博客园记录下过程,省得以后忘.之所以选图书馆管理系统呢,是因为做过几个课程设计.对它的需求还是比较了解一点.现在通用的框架模式都是MVC,我在学的时候想先从Model层开始学.于是就先选Hibernate开始. 一.数据库 先简单设计几张表,图书表,

HeyWeGo小组《Java程序设计》 2015—2016年学期团队项目总结

HeyWeGo小组<Java程序设计> 2015—2016年学期团队项目总结 题目简介 一个简单的扫雷小游戏,在12*12的方格盘上,首先可以设定雷的个数,然后点击开始程序就会随机布雷,开始游戏后如果点到雷就会显示游戏结束,如果没有,会出现数字表示周围一圈雷的个数,以此推理当扫出所有雷将显示游戏胜利. 游戏项目规划: 确定游戏中方块格子的个数 确定游戏中地雷的个数(初始10个),完成布雷 计算每个方块周围的雷数,在方块周围本身没有地雷的情况下,统计周围地雷的个数 若周围没有地雷则翻开周围的空白