JInternalFrame 支持在 JFrame 窗口内部显示一个完整的子窗口,并提供了许多本机窗体功能的轻量级对象,包括拖动、关闭、变成图标、调整大小、标题显示和支持菜单栏等。
public void setLocationRelativeTo(Component c)设置窗口相对于指定组件的位置。
如果组件当前未显示或者 c 为 null,则此窗口将置于屏幕的中央。
中点可以使用 GraphicsEnvironment.getCenterPoint 确定。
frame.setDefaultCloseOperation()是设置用户在此窗体上发起 “close” 时默认执行的操作。必须指定以下选项之一:
1、DO_NOTHING_ON_CLOSE(在 WindowConstants 中定义):不执行任何操作;要求程序在已注册的 WindowListener 对象的 windowClosing 方法中处理该操作。
2、HIDE_ON_CLOSE(在 WindowConstants 中定义):调用任意已注册的 WindowListener 对象后自动隐藏该窗体。
3、DISPOSE_ON_CLOSE(在 WindowConstants 中定义):调用任意已注册 WindowListener 的对象后自动隐藏并释放该窗体。
4、EXIT_ON_CLOSE(在 JFrame 中定义):使用 System exit 方法退出应用程序。仅在应用程序中使用。
默认情况下,该值被设置为 HIDE_ON_CLOSE
也就是说没有设置的话,默认点关闭时只是隐藏窗体,在后台进程中还可以看到,如果有多个窗口,只是销毁调用dispose的窗口,其他窗口仍然存在,整个应用程序还是处于运行状态。
public void setclosable(boolean b)
设置是否可以通过某个用户操作关闭此 jinternalframe。
参数:
b - boolean 值,其中 true 意味着可以关闭此内部窗体
public void seticonifiable(boolean b)
设置 iconable 属性,对于能够使 jinternalframe 变成一个图标的用户而言,该属性必须为 true。某些外观可能不实现图标化;它们将忽略此属性。
参数:
b - boolean 值,其中 true 意味着可以图标化此内部窗体
JLabel组件表示的是一个标签,本身是用于显示信息的,一般情况下是不能直接更改器显示内容的。创建完的Label对象可以通过Container类中的add()方法,加入到容器中,JLabel类的常用方法和常量如下表所示。
// 创建不带有设置文本或图标的按钮
JButton()
// 创建一个带文本的按钮
JButton(String text)
// 创建一个带图标的按钮
JButton(Icon icon)
// 设置按钮的 文本、字体 和 字体颜色
void setText(String text)
void setFont(Font font)
void setForeground(Color fg)
/* 以下方法定义在 javax.swing.AbstractButton 基类中 */
// 设置按钮是否可用
void setEnabled(boolean enable)
// 设置按钮在 默认、按下、不可用 时显示的图片
void setIcon(Icon defaultIcon)
void setPressedIcon(Icon pressedIcon)
void setDisabledIcon(Icon disabledIcon)
// 是否绘制边框(设置不绘制边框,再结合上面三个设置按钮状态图片的方法,可实现自定义按钮)
void setBorderPainted(boolean b);
// 添加 和 移除 按钮的点击事件
void addActionListener(ActionListener listener)
void removeActionListener(ActionListener listener)
package com.xiets.swing;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Main {
public static void main(String[] args) {
JFrame jf = new JFrame("测试窗口");
jf.setSize(200, 200);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
// 创建一个按钮
final JButton btn = new JButton("测试按钮");
// 添加按钮的点击事件监听器
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取到的事件源就是按钮本身
// JButton btn = (JButton) e.getSource();
System.out.println("按钮被点击");
}
});
panel.add(btn);
jf.setContentPane(panel);
jf.setVisible(true);
}
}
GroupLayout,分组布局管理器。它将组建按层次分组,以决定它们在 Container 中的位置。GroupLayout 主要供生成器使用(生成 并行组 和 串行组)。分组由GroupLayout.Group类的实例来完成,每个组可以包含任意数量的元素(Group、Component 或 Gap)。
GroupLayout支持两种组:
串行组 (sequential group):按顺序沿指定方向(水平/垂直)逐个放置元素。
并行组 (parallel group):沿指定方向(水平/垂直)并行排列元素,能够以四种不同方式对齐其子元素。
PS: 串行和并行根据不同的方向(水平/垂直方向),元素的排列方式也不同(从上到下 或 从左到右)。
// 先创建分组布局,并关联容器
GroupLayout layout = new GroupLayout(panel);
// 创建 串行组
GroupLayout.SequentialGroup seqGroup = layout.createSequentialGroup();
// 添加 组元素
seqGroup.addGroup(group);
// 添加 组件元素
seqGroup.addComponent(component);
// 添加 间隙
seqGroup.addGap(size);
// 创建 并行组
GroupLayout.ParallelGroup paralGroup = layout.createParallelGroup();
// 添加 组元素(可指定对齐方式)
paralGroup.addGroup([alignment,] group);
// 添加 组件元素(可指定对齐方式)
paralGroup.addComponent(component, [alignment]);
// 添加 间隙
paralGroup.addGap(size);
// 指定布局的水平组(确定组件在 X轴 方向上的位置)
GroupLayout.setHorizontalGroup(GroupLayout.Group group);
// 指定布局的垂直组(确定组件在 Y轴 方向上的位置)
GroupLayout.setVerticalGroup(GroupLayout.Group group);
//代码示例
package com.xiets.swing;
import javax.swing.*;
public class Main {
public static void main(String[] args) {
JFrame jf = new JFrame("测试窗口");
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
// 创建内容面板容器
JPanel panel = new JPanel();
// 创建分组布局,并关联容器
GroupLayout layout = new GroupLayout(panel);
// 设置容器的布局
panel.setLayout(layout);
// 创建组件
JButton btn01 = new JButton("Button01");
JButton btn02 = new JButton("Button02");
JButton btn03 = new JButton("Button03");
JButton btn04 = new JButton("Button04");
JButton btn05 = new JButton("Button05");
// 自动创建组件之间的间隙
layout.setAutoCreateGaps(true);
// 自动创建容器与触到容器边框的组件之间的间隙
layout.setAutoCreateContainerGaps(true);
/*
* 水平组(仅确定 X 轴方向的坐标/排列方式)
*
* 水平串行: 水平排列(左右排列)
* 水平并行: 垂直排列(上下排列)
*/
// 水平并行(上下) btn01 和 btn02
GroupLayout.ParallelGroup hParalGroup01 = layout.createParallelGroup().addComponent(btn01).addComponent(btn02);
// 水平并行(上下)btn03 和 btn04
GroupLayout.ParallelGroup hParalGroup02 = layout.createParallelGroup().addComponent(btn03).addComponent(btn04);
// 水平串行(左右)hParalGroup01 和 hParalGroup02
GroupLayout.SequentialGroup hSeqGroup = layout.createSequentialGroup().addGroup(hParalGroup01).addGroup(hParalGroup02);
// 水平并行(上下)hSeqGroup 和 btn05
GroupLayout.ParallelGroup hParalGroup = layout.createParallelGroup().addGroup(hSeqGroup).addComponent(btn05, GroupLayout.Alignment.CENTER);
layout.setHorizontalGroup(hParalGroup); // 指定布局的 水平组(水平坐标)
/*
* 垂直组(仅确定 Y 轴方向的坐标/排列方式)
*
* 垂直串行: 垂直排列(上下排列)
* 垂直并行: 水平排列(左右排列)
*/
// 垂直并行(左右)btn01 和 btn03
GroupLayout.ParallelGroup vParalGroup01 = layout.createParallelGroup().addComponent(btn01).addComponent(btn03);
// 垂直并行(左右)btn02 和 btn04
GroupLayout.ParallelGroup vParalGroup02 = layout.createParallelGroup().addComponent(btn02).addComponent(btn04);
// 垂直串行(上下)vParalGroup01, vParalGroup02 和 btn05
GroupLayout.SequentialGroup vSeqGroup = layout.createSequentialGroup().addGroup(vParalGroup01).addGroup(vParalGroup02).addComponent(btn05);
layout.setVerticalGroup(vSeqGroup); // 指定布局的 垂直组(垂直坐标)
jf.setContentPane(panel);
jf.pack();
jf.setLocationRelativeTo(null);
jf.setVisible(true);
}
}
EventQueue是一个与平台无关的类,它将来自于底层同位体类和受信任的应用程序类的事件列入队列。
它封装了异步事件指派机制,该机制从队列中提取事件,然后通过对此 EventQueue 调用dispatchEvent(AWTEvent)方法来指派这些事件(事件作为参数被指派)。该机制的特殊行为是与实现有关的。指派实际排入到该队列中的事件(注意,正在发送到EventQueue 中的事件可以被合并)的唯一要求是:
按顺序指派。
也就是说,不允许同时从该队列中指派多个事件。
指派顺序与它们排队的顺序相同。
也就是说,如果 AWTEvent A 比 AWTEvent B 先排入到 EventQueue 中,那么事件 B 不能在事件 A 之前被指派。
一些浏览器将不同代码基中的 applet 分成独立的上下文,并在这些上下文之间建立一道道墙。在这样的场景中,每个上下文将会有一个EventQueue。其他浏览器将所有的 applet 放入到同一个上下文中,这意味着所有 applet只有一个全局EventQueue。该行为是与实现有关的。有关更多信息,请参照浏览器的文档。
使用eventqueue.invokelater()好处是显而易见的,这个方法调用完毕后,它会被销毁,因为匿名内部类是作为临时变量存在的,给它分配的内存在此时会被释放。这个对于只需要在一个地方使用时可以节省内存,而且这个类是不可以被其它的方法或类使用的,只能被EventQueue.invokeLater()来使用。但如果你需要一个在很多地方都能用到的类,而不是只在某一个类里面或者方法里用的话,定义成匿名内部类显然是不可取的。是,runnable是跟线程相关的类。
package util;
import java.sql.Connection;
import java.sql.DriverManager;
public class DbUtil {
private String dbUrl="jdbc:mysql://localhost:3306/db_book?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false";
private String jdbcName="com.mysql.jdbc.Driver";
private String dbUserName="root";
private String dbPassword="gao2450233230";
public Connection getCon()throws Exception{
Class.forName(jdbcName);
Connection con=DriverManager.getConnection(dbUrl, dbUserName, dbPassword);
return con;
}
public void closeCon(Connection con)throws Exception{
if(con!=null){
con.close();
}
}
public static void main(String[] args) {
DbUtil dbUtil=new DbUtil();
try {
dbUtil.getCon();
System.out.println("数据库连接成功!");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("数据库连接失败!");
}
}
}
package util;
public class StringUtil {
public static boolean isEmpty(String str){
if(str==null || "".equals(str.trim())){
return true;
}else{
return false;
}
}
public static boolean isNotEmpty(String str){
if(str!=null && !"".equals(str.trim())){
return true;
}else{
return false;
}
}
}
package dao;
import util.StringUtil;
import model.Book;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
import java.sql.Connection;
//图书Dao类 Administrator
public class BookDao {
//图书信息修改 con book Exception
public int update(Connection con,Book book)throws Exception{
String sql="update t_book set bookName=?,author=?,sex=?,price=?,bookDesc=?,bookTypeId=? where id=?";
PreparedStatement daoru=con.prepareStatement(sql);
daoru.setInt(7, book.getId());
daoru.setInt(6, book.getBookTypeId());
daoru.setString(5, book.getBookDesc());
daoru.setFloat(4, book.getPrice());
daoru.setString(3, book.getSex());
daoru.setString(2, book.getAuthor());
daoru.setString(1, book.getBookName());
return daoru.executeUpdate();
}
//图书信息查询 con book Exception
public ResultSet list(Connection con,Book book)throws Exception{
StringBuffer sb=new StringBuffer("select * from t_book b,t_bookType bt where b.bookTypeId=bt.id");
if(book.getBookTypeId()!=null && book.getBookTypeId()!=-1){
sb.append(" and b.bookTypeId="+book.getBookTypeId());
}
if(StringUtil.isNotEmpty(book.getAuthor())){
sb.append(" and b.author like '%"+book.getAuthor()+"%'");
}
if(StringUtil.isNotEmpty(book.getBookName())){
sb.append(" and b.bookName like '%"+book.getBookName()+"%'");
}
PreparedStatement daoru=con.prepareStatement(sb.toString());
return daoru.executeQuery();
}
//图书信息删除 con id Exception
public int delete(Connection con,String id)throws Exception{
String sql="delete from t_book where id=?";
PreparedStatement daoru=con.prepareStatement(sql);
daoru.setString(1, id);
return daoru.executeUpdate();
}
//图书添加 con book Exception
public int add(Connection con,Book book)throws Exception{
String sql="insert into t_book values(null,?,?,?,?,?,?)";
PreparedStatement daoru=con.prepareStatement(sql);
daoru.setString(6, book.getBookDesc());
daoru.setInt(5, book.getBookTypeId());
daoru.setFloat(4, book.getPrice());
daoru.setString(3, book.getSex());
daoru.setString(2, book.getAuthor());
daoru.setString(1, book.getBookName());
return daoru.executeUpdate();
}
//指定图书类别下是否存在图书 con bookTypeId Exception
public boolean existBookByBookTypeId(Connection con,String bookTypeId)throws Exception{
String sql="select * from t_book where bookTypeId=?";
PreparedStatement daoru=con.prepareStatement(sql);
daoru.setString(1, bookTypeId);
ResultSet rs=daoru.executeQuery();
return rs.next();
}
}
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import model.BookType;
import util.StringUtil;
// 图书类别Dao类 Administrator
public class BookTypeDao {
// 查询图书类别集合 con bookType Exception
public ResultSet list(Connection con,BookType bookType)throws Exception{
StringBuffer sb=new StringBuffer("select * from t_bookType");
if(StringUtil.isNotEmpty(bookType.getBookTypeName())){
sb.append(" and bookTypeName like '%"+bookType.getBookTypeName()+"%'");
}
PreparedStatement daoru=con.prepareStatement(sb.toString().replaceFirst("and", "where"));
return daoru.executeQuery();
}
}
package model;
//图书类
public class Book {
private int id; // 编号
private String bookName; // 图书名称
private Float price; // 图书价格
private String author; // 作者
private String sex; // 性别
private Integer bookTypeId; // 图书类别Id
private String bookTypeName; // 图书类名名称
private String bookDesc; // 备注
public Book() {
super();
// TODO Auto-generated constructor stub
}
public Book(int id, String bookName, String author, String sex, Float price, Integer bookTypeId, String bookDesc) {
super();
this.id = id;
this.bookName = bookName;
this.author = author;
this.sex = sex;
this.price = price;
this.bookTypeId = bookTypeId;
this.bookDesc = bookDesc;
}
public Book(String bookName, String author, Integer bookTypeId) {
super();
this.bookName = bookName;
this.author = author;
this.bookTypeId = bookTypeId;
}
public Book(String bookName, String author, String sex, Float price, Integer bookTypeId, String bookDesc) {
super();
this.bookName = bookName;
this.author = author;
this.sex = sex;
this.price = price;
this.bookTypeId = bookTypeId;
this.bookDesc = bookDesc;
}
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getBookName() {
return bookName;
}
public void setPrice(Float price) {
this.price = price;
}
public Float getPrice() {
return price;
}
public void setAuthor(String author) {
this.author = author;
}
public String getAuthor() {
return author;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getSex() {
return sex;
}
public void setBookTypeId(Integer bookTypeId) {
this.bookTypeId = bookTypeId;
}
public Integer getBookTypeId() {
return bookTypeId;
}
public void setBookTypeName(String bookTypeName) {
this.bookTypeName = bookTypeName;
}
public String getBookTypeName() {
return bookTypeName;
}
public void setBookDesc(String bookDesc) {
this.bookDesc = bookDesc;
}
public String getBookDesc() {
return bookDesc;
}
}
package model;
//图书类别类
public class BookType {
private int id; // 编号
private String bookTypeName; // 图书类别名称
private String bookTypeDesc; // 备注
public BookType() {
super();
// TODO Auto-generated constructor stub
}
public BookType(int id, String bookTypeName, String bookTypeDesc) {
super();
this.id = id;
this.bookTypeName = bookTypeName;
this.bookTypeDesc = bookTypeDesc;
}
public BookType(String bookTypeName, String bookTypeDesc) {
super();
this.bookTypeName = bookTypeName;
this.bookTypeDesc = bookTypeDesc;
}
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setBookTypeName(String bookTypeName) {
this.bookTypeName = bookTypeName;
}
public String getBookTypeName() {
return bookTypeName;
}
@Override
public String toString() {
return bookTypeName;
}
}
package view;
import java.awt.EventQueue;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.sql.Connection;
import java.sql.ResultSet;
import javax.swing.ButtonGroup;
import javax.swing.GroupLayout;
import javax.swing.ImageIcon;
import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JInternalFrame;
import javax.swing.border.LineBorder;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.JButton;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.LayoutStyle.ComponentPlacement;
import util.StringUtil;
import util.DbUtil;
import dao.BookDao;
import dao.BookTypeDao;
import model.Book;
import model.BookType;
public class BookaddView extends JInternalFrame {
private JTextField bookNameTxt;
private JTextField authorTxt;
private final ButtonGroup buttonGroup = new ButtonGroup();
private JTextField priceTxt;
private JComboBox bookTypeJcb;
private JTextArea bookDescTxt;
private JRadioButton manJrb;
private JRadioButton femaleJrb;
private DbUtil dbUtil=new DbUtil();
private BookTypeDao bookTypeDao=new BookTypeDao();
private BookDao bookDao=new BookDao();
//主函数
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
BookaddView frame = new BookaddView();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
//图书添加事件处理
private void bookAddActionPerformed(ActionEvent evt) {
String bookName=this.bookNameTxt.getText();
String author=this.authorTxt.getText();
String price=this.priceTxt.getText();
String bookDesc=this.bookDescTxt.getText();
if(StringUtil.isEmpty(bookName)){
JOptionPane.showMessageDialog(null, "图书名称不能为空!");
return;
}
if(StringUtil.isEmpty(author)){
JOptionPane.showMessageDialog(null, "图书作者不能为空!");
return;
}
if(StringUtil.isEmpty(price)){
JOptionPane.showMessageDialog(null, "图书价格不能为空!");
return;
}
String sex="";
if(manJrb.isSelected()){
sex="男";
}else if(femaleJrb.isSelected()){
sex="女";
}
BookType bookType=(BookType) bookTypeJcb.getSelectedItem();
int bookTypeId=bookType.getId();
Book book=new Book(bookName,author, sex, Float.parseFloat(price) , bookTypeId, bookDesc);
Connection con=null;
try{
con=dbUtil.getCon();
int addNum=bookDao.add(con, book);
if(addNum==1){
JOptionPane.showMessageDialog(null, "图书添加成功!");
resetValue();
}else{
JOptionPane.showMessageDialog(null, "图书添加失败!");
}
}catch(Exception e){
e.printStackTrace();
JOptionPane.showMessageDialog(null, "图书添加失败!");
}finally{
try {
dbUtil.closeCon(con);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//重置表单
private void resetValue(){
this.bookNameTxt.setText("");
this.authorTxt.setText("");
this.priceTxt.setText("");
this.manJrb.setSelected(true);
this.bookDescTxt.setText("");
if(this.bookTypeJcb.getItemCount()>0){
this.bookTypeJcb.setSelectedIndex(0);
}
}
public BookaddView() {
setClosable(true);
setIconifiable(true);
setTitle("图书添加");
setBounds(100, 100, 450, 467);
JLabel label = new JLabel("图书名称:");
bookNameTxt = new JTextField();
bookNameTxt.setColumns(10);
JLabel label_1 = new JLabel("图书作者:");
authorTxt = new JTextField();
authorTxt.setColumns(10);
JLabel label_2 = new JLabel("作者性别:");
manJrb = new JRadioButton("男");
buttonGroup.add(manJrb);
manJrb.setSelected(true);
femaleJrb = new JRadioButton("女");
buttonGroup.add(femaleJrb);
JLabel label_3 = new JLabel("图书价格:");
priceTxt = new JTextField();
priceTxt.setColumns(10);
JLabel label_4 = new JLabel("图书描述:");
bookDescTxt = new JTextArea();
JLabel label_5 = new JLabel("图书类别:");
bookTypeJcb = new JComboBox();
//
JButton button = new JButton("添加");
// 添加按钮的点击事件
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
bookAddActionPerformed(e);
}
});//
// 设置按钮在 默认 时显示的图片
button.setIcon(new ImageIcon(BookaddView.class.getResource("/images/add.png")));//
JButton button_1 = new JButton("重置");
button_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
resetValueActionPerformed(e);
}
});//
button_1.setIcon(new ImageIcon(BookaddView.class.getResource("/images/reset.png")));
//setHorizontalGroup指定布局的水平组(确定组件在 X轴 方向上的位置)
//createParallelGroup 创建 并行组
//createSequentialGroup(); 创建 串行组
//addGap(size); 添加 间隙
//addGroup(group); 添加 组元素
//addComponent; 添加 组件元素
//addPreferredGap添加一个表示两个距离最近的组件之间首选间隙的元素。在布局过程中,找到相邻元素,并根据相邻组件之间的首选间隙大小来设置此间隙的最小大小。如果找不到相邻组件,则最小大小被设置为 0。
GroupLayout groupLayout = new GroupLayout(getContentPane());
groupLayout.setHorizontalGroup(
groupLayout.createParallelGroup(Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addGap(42)
.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addComponent(button)
.addPreferredGap(ComponentPlacement.UNRELATED)
.addComponent(button_1)
.addGap(232))///
.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
.addComponent(label_5)
.addGroup(groupLayout.createSequentialGroup()
.addGroup(groupLayout.createParallelGroup(Alignment.TRAILING)
.addComponent(label_4)
.addComponent(label_2)
.addComponent(label))//
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addGroup(groupLayout.createParallelGroup(Alignment.LEADING, false)
.addComponent(bookNameTxt, GroupLayout.PREFERRED_SIZE, 88, GroupLayout.PREFERRED_SIZE)
.addGroup(groupLayout.createSequentialGroup()
.addComponent(manJrb)
.addPreferredGap(ComponentPlacement.UNRELATED)
.addComponent(femaleJrb))
.addComponent(bookTypeJcb, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(35)
.addGroup(groupLayout.createParallelGroup(Alignment.LEADING, false)
.addGroup(groupLayout.createSequentialGroup()
.addComponent(label_1)
.addPreferredGap(ComponentPlacement.UNRELATED)
.addComponent(authorTxt, GroupLayout.PREFERRED_SIZE, 91, GroupLayout.PREFERRED_SIZE))
.addGroup(groupLayout.createSequentialGroup()
.addComponent(label_3)
.addPreferredGap(ComponentPlacement.UNRELATED)
.addComponent(priceTxt))))
.addComponent(bookDescTxt))
.addContainerGap(44, Short.MAX_VALUE)))))
);
groupLayout.setVerticalGroup(
groupLayout.createParallelGroup(Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addGap(42)
.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
.addComponent(label)
.addComponent(bookNameTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(label_1)
.addComponent(authorTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(29)
.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
.addComponent(label_2)
.addComponent(manJrb)
.addComponent(femaleJrb)
.addComponent(label_3)
.addComponent(priceTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(33)
.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
.addComponent(label_5)
.addComponent(bookTypeJcb, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(30)
.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
.addComponent(label_4)
.addComponent(bookDescTxt, GroupLayout.PREFERRED_SIZE, 137, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(ComponentPlacement.RELATED, 37, Short.MAX_VALUE)
.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
.addComponent(button)
.addComponent(button_1))
.addGap(42))
);
getContentPane().setLayout(groupLayout);
// 设置文本域边框
bookDescTxt.setBorder(new LineBorder(new java.awt.Color(127,157,185), 1, false));
fillBookType();
}
//重置事件处理
private void resetValueActionPerformed(ActionEvent e) {
this.resetValue();
}
//初始化图书类别下拉框
private void fillBookType(){
Connection con=null;
BookType bookType=null;
try{
con=dbUtil.getCon();
ResultSet rs=bookTypeDao.list(con, new BookType());
while(rs.next()){
bookType=new BookType();
bookType.setId(rs.getInt("id"));
bookType.setBookTypeName(rs.getString("bookTypeName"));
this.bookTypeJcb.addItem(bookType);
}
}catch(Exception e){
e.printStackTrace();
}finally{
}
}
}
package view;
import model.Book;
import model.BookType;
import util.DbUtil;
import util.StringUtil;
import dao.BookDao;
import dao.BookTypeDao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.Vector;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.ButtonGroup;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JTable;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableModel;
public class BookmanageView extends JInternalFrame {
private JTable bookTable;
private JTextField s_bookNameTxt;
private JTextField s_authorTxt;
private JComboBox s_bookTypeJcb;
private JRadioButton manJrb ;
private JRadioButton femaleJrb ;
private JTextArea bookDescTxt;
private JComboBox bookTypeJcb ;
private DbUtil dbUtil=new DbUtil();
private BookTypeDao bookTypeDao=new BookTypeDao();
private BookDao bookDao=new BookDao();
private JTextField idTxt;
private JTextField bookNameTxt;
private final ButtonGroup buttonGroup = new ButtonGroup();
private JTextField priceTxt;
private JTextField authorTxt;
//主函数
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
BookmanageView frame = new BookmanageView();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
//图书删除 @param evt
private void bookDeleteActionPerformed(ActionEvent evt) {
String id=idTxt.getText();
if(StringUtil.isEmpty(id)){
JOptionPane.showMessageDialog(null, "请选择要删除的记录");
return;
}
int n=JOptionPane.showConfirmDialog(null, "确定要删除该记录吗?");
if(n==0){
Connection con=null;
try{
con=dbUtil.getCon();
int deleteNum=bookDao.delete(con, id);
if(deleteNum==1){
JOptionPane.showMessageDialog(null, "删除成功");
this.resetValue();
this.fillTable(new Book());
}else{
JOptionPane.showMessageDialog(null, "删除失败");
}
}catch(Exception e){
e.printStackTrace();
JOptionPane.showMessageDialog(null, "删除失败");
}finally{
try {
dbUtil.closeCon(con);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
//图书修改 @param evt
private void bookUpdateActionPerformed(ActionEvent evt) {
String id=this.idTxt.getText();
if(StringUtil.isEmpty(id)){
JOptionPane.showMessageDialog(null, "请选择要修改的记录");
return;
}
String bookName=this.bookNameTxt.getText();
String author=this.authorTxt.getText();
String price=this.priceTxt.getText();
String bookDesc=this.bookDescTxt.getText();
if(StringUtil.isEmpty(bookName)){
JOptionPane.showMessageDialog(null, "图书名称不能为空!");
return;
}
if(StringUtil.isEmpty(author)){
JOptionPane.showMessageDialog(null, "图书作者不能为空!");
return;
}
if(StringUtil.isEmpty(price)){
JOptionPane.showMessageDialog(null, "图书价格不能为空!");
return;
}
String sex="";
if(manJrb.isSelected()){
sex="男";
}else if(femaleJrb.isSelected()){
sex="女";
}
BookType bookType=(BookType) bookTypeJcb.getSelectedItem();
int bookTypeId=bookType.getId();
Book book=new Book(Integer.parseInt(id), bookName, author, sex, Float.parseFloat(price), bookTypeId, bookDesc);
Connection con=null;
try{
con=dbUtil.getCon();
int addNum=bookDao.update(con, book);
if(addNum==1){
JOptionPane.showMessageDialog(null, "图书修改成功!");
resetValue();
this.fillTable(new Book());
}else{
JOptionPane.showMessageDialog(null, "图书修改失败!");
}
}catch(Exception e){
e.printStackTrace();
JOptionPane.showMessageDialog(null, "图书修改失败!");
}finally{
try {
dbUtil.closeCon(con);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//图书查询@param evt
private void bookSearchActionPerformed(ActionEvent evt) {
String bookName=this.s_bookNameTxt.getText();
String author=this.s_authorTxt.getText();
BookType bookType=(BookType) this.s_bookTypeJcb.getSelectedItem();
int bookTypeId=bookType.getId();
Book book=new Book(bookName,author,bookTypeId);
this.fillTable(book);
}
//重置表单
private void resetValue(){
this.idTxt.setText("");
this.bookNameTxt.setText("");
this.authorTxt.setText("");
this.priceTxt.setText("");
this.manJrb.setSelected(true);
this.bookDescTxt.setText("");
if(this.bookTypeJcb.getItemCount()>0){
this.bookTypeJcb.setSelectedIndex(0);
}
}
//表格行点击事件处理@param met
private void bookTableMousePressed(MouseEvent met) {
int row=this.bookTable.getSelectedRow();
this.idTxt.setText((String)bookTable.getValueAt(row, 0));
this.bookNameTxt.setText((String)bookTable.getValueAt(row, 1));
this.authorTxt.setText((String)bookTable.getValueAt(row, 2));
String sex=(String)bookTable.getValueAt(row, 3);
if("男".equals(sex)){
this.manJrb.setSelected(true);
}else if("女".equals(sex)){
this.femaleJrb.setSelected(true);
}
this.priceTxt.setText((Float)bookTable.getValueAt(row, 4)+"");
this.bookDescTxt.setText((String)bookTable.getValueAt(row, 5));
String bookTypeName=(String)this.bookTable.getValueAt(row, 6);
int n=this.bookTypeJcb.getItemCount();
for(int i=0;i<n;i++){
BookType item=(BookType)this.bookTypeJcb.getItemAt(i);
if(item.getBookTypeName().equals(bookTypeName)){
this.bookTypeJcb.setSelectedIndex(i);
}
}
}
//初始化下拉框 @param type 下拉框类型
private void fillBookType(String type){
Connection con=null;
BookType bookType=null;
try{
con=dbUtil.getCon();
ResultSet rs=bookTypeDao.list(con, new BookType());
if("search".equals(type)){
bookType=new BookType();
bookType.setBookTypeName("请选择...");
bookType.setId(-1);
this.s_bookTypeJcb.addItem(bookType);
}
while(rs.next()){
bookType=new BookType();
bookType.setBookTypeName(rs.getString("bookTypeName"));
bookType.setId(rs.getInt("id"));
if("search".equals(type)){
this.s_bookTypeJcb.addItem(bookType);
}else if("modify".equals(type)){
this.bookTypeJcb.addItem(bookType);
}
}
}catch(Exception e){
e.printStackTrace();
}finally{
try {
dbUtil.closeCon(con);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//初始化表格数据@param book
private void fillTable(Book book){
DefaultTableModel dtm=(DefaultTableModel) bookTable.getModel();
dtm.setRowCount(0); // 设置成0行
Connection con=null;
try{
con=dbUtil.getCon();
ResultSet rs=bookDao.list(con, book);
while(rs.next()){
Vector v=new Vector();
v.add(rs.getString("id"));
v.add(rs.getString("bookName"));
v.add(rs.getString("author"));
v.add(rs.getString("sex"));
v.add(rs.getFloat("price"));
v.add(rs.getString("bookDesc"));
v.add(rs.getString("bookTypeName"));
dtm.addRow(v);
}
}catch(Exception e){
e.printStackTrace();
}finally{
try {
dbUtil.closeCon(con);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//图书管理界面
public BookmanageView() {
setClosable(true);//
setIconifiable(true);//
setTitle("图书管理");//标题
setBounds(100, 100, 677, 487);//边框大小
JScrollPane scrollPane = new JScrollPane();
JPanel panel = new JPanel();
panel.setBorder(new TitledBorder(null, "搜索条件", TitledBorder.LEADING, TitledBorder.TOP, null, null));
JPanel panel_1 = new JPanel();
panel_1.setBorder(new TitledBorder(null, "表单操作", TitledBorder.LEADING, TitledBorder.TOP, null, null));
GroupLayout groupLayout = new GroupLayout(getContentPane());
groupLayout.setHorizontalGroup(
groupLayout.createParallelGroup(Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addContainerGap()
.addGroup(groupLayout.createParallelGroup(Alignment.TRAILING)
.addComponent(panel_1, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(Alignment.LEADING, groupLayout.createParallelGroup(Alignment.LEADING, false)
.addComponent(panel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(scrollPane)))
.addContainerGap(66, Short.MAX_VALUE))
);
groupLayout.setVerticalGroup(
groupLayout.createParallelGroup(Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addGap(28)
.addComponent(panel, GroupLayout.PREFERRED_SIZE, 65, GroupLayout.PREFERRED_SIZE)
.addGap(18)
.addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 116, GroupLayout.PREFERRED_SIZE)
.addGap(18)
.addComponent(panel_1, GroupLayout.DEFAULT_SIZE, 203, Short.MAX_VALUE)
.addContainerGap())
);
JLabel lblNewLabel = new JLabel("编号:");
idTxt = new JTextField();
idTxt.setEditable(false);
idTxt.setColumns(10);
JLabel lblNewLabel_1 = new JLabel("图书名称:");
bookNameTxt = new JTextField();
bookNameTxt.setColumns(10);
JLabel label_3 = new JLabel("图书作者:");
manJrb = new JRadioButton("男");
buttonGroup.add(manJrb);
manJrb.setSelected(true);
femaleJrb = new JRadioButton("女");
buttonGroup.add(femaleJrb);
JLabel label_4 = new JLabel("价格:");
priceTxt = new JTextField();
priceTxt.setColumns(10);
JLabel lblNewLabel_2 = new JLabel("图书作者:");
authorTxt = new JTextField();
authorTxt.setColumns(10);
JLabel label_5 = new JLabel("图书类别:");
bookTypeJcb = new JComboBox();
JLabel label_6 = new JLabel("图书描述:");
bookDescTxt = new JTextArea();
JButton button_1 = new JButton("修改");
button_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
bookUpdateActionPerformed(evt);
}
});
button_1.setIcon(new ImageIcon(BookmanageView.class.getResource("/images/modify.png")));
JButton button_2 = new JButton("删除");
button_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
bookDeleteActionPerformed(evt);
}
});
button_2.setIcon(new ImageIcon(BookmanageView.class.getResource("/images/delete.png")));
GroupLayout gl_panel_1 = new GroupLayout(panel_1);
gl_panel_1.setHorizontalGroup(
gl_panel_1.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panel_1.createSequentialGroup()
.addGap(19)
.addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panel_1.createSequentialGroup()
.addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING, false)
.addGroup(gl_panel_1.createSequentialGroup()
.addComponent(label_4)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(priceTxt))
.addGroup(gl_panel_1.createSequentialGroup()
.addComponent(lblNewLabel)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(idTxt, GroupLayout.PREFERRED_SIZE, 87, GroupLayout.PREFERRED_SIZE)))
.addGap(26)
.addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING, false)
.addGroup(gl_panel_1.createSequentialGroup()
.addComponent(lblNewLabel_1)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(bookNameTxt, GroupLayout.PREFERRED_SIZE, 85, GroupLayout.PREFERRED_SIZE))
.addGroup(gl_panel_1.createSequentialGroup()
.addComponent(lblNewLabel_2)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(authorTxt)))
.addGap(26)
.addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING, false)
.addGroup(gl_panel_1.createSequentialGroup()
.addComponent(label_3)
.addPreferredGap(ComponentPlacement.UNRELATED)
.addComponent(manJrb)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(femaleJrb))
.addGroup(gl_panel_1.createSequentialGroup()
.addComponent(label_5)
.addPreferredGap(ComponentPlacement.UNRELATED)
.addComponent(bookTypeJcb, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
.addGroup(gl_panel_1.createParallelGroup(Alignment.TRAILING)
.addGroup(Alignment.LEADING, gl_panel_1.createSequentialGroup()
.addGap(126)
.addComponent(button_1)
.addPreferredGap(ComponentPlacement.RELATED, 165, Short.MAX_VALUE)
.addComponent(button_2)
.addGap(73))
.addGroup(Alignment.LEADING, gl_panel_1.createSequentialGroup()
.addComponent(label_6)
.addPreferredGap(ComponentPlacement.UNRELATED)
.addComponent(bookDescTxt, GroupLayout.DEFAULT_SIZE, 441, Short.MAX_VALUE))))
.addGap(89))
);
gl_panel_1.setVerticalGroup(
gl_panel_1.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panel_1.createSequentialGroup()
.addGap(21)
.addGroup(gl_panel_1.createParallelGroup(Alignment.BASELINE)
.addComponent(lblNewLabel)
.addComponent(idTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(lblNewLabel_1)
.addComponent(bookNameTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(label_3)
.addComponent(manJrb)
.addComponent(femaleJrb))
.addGap(18)
.addGroup(gl_panel_1.createParallelGroup(Alignment.BASELINE)
.addComponent(label_4)
.addComponent(priceTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(lblNewLabel_2)
.addComponent(authorTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(label_5)
.addComponent(bookTypeJcb, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(18)
.addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING)
.addComponent(label_6)
.addComponent(bookDescTxt, GroupLayout.PREFERRED_SIZE, 35, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING)
.addComponent(button_1)
.addComponent(button_2))
.addContainerGap())
);
panel_1.setLayout(gl_panel_1);
JLabel label = new JLabel("图书名称:");
s_bookNameTxt = new JTextField();
s_bookNameTxt.setColumns(10);
JLabel label_1 = new JLabel("图书作者:");
s_authorTxt = new JTextField();
s_authorTxt.setColumns(10);
JLabel label_2 = new JLabel("图书类别:");
s_bookTypeJcb = new JComboBox();
JButton button = new JButton("查询");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
bookSearchActionPerformed(e);
}
});
button.setIcon(new ImageIcon(BookmanageView.class.getResource("/images/search.png")));
GroupLayout gl_panel = new GroupLayout(panel);
gl_panel.setHorizontalGroup(
gl_panel.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panel.createSequentialGroup()
.addGap(19)
.addComponent(label)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(s_bookNameTxt, GroupLayout.PREFERRED_SIZE, 77, GroupLayout.PREFERRED_SIZE)
.addGap(18)
.addComponent(label_1)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(s_authorTxt, GroupLayout.PREFERRED_SIZE, 74, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.UNRELATED)
.addComponent(label_2)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(s_bookTypeJcb, GroupLayout.PREFERRED_SIZE, 78, GroupLayout.PREFERRED_SIZE)
.addGap(18)
.addComponent(button)
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
gl_panel.setVerticalGroup(
gl_panel.createParallelGroup(Alignment.TRAILING)
.addGroup(gl_panel.createSequentialGroup()
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
.addComponent(label)
.addComponent(s_bookNameTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(label_1)
.addComponent(s_authorTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(label_2)
.addComponent(s_bookTypeJcb, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(button))
.addGap(16))
);
panel.setLayout(gl_panel);
bookTable = new JTable();
bookTable.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent met) {
bookTableMousePressed(met);
}
});
scrollPane.setViewportView(bookTable);
bookTable.setModel(new DefaultTableModel(
new Object[][] {
},
new String[] {
"编号", "图书名称", "图书作者", "作者性别", "图书价格", "图书描述", "图书类别"
}
) {
boolean[] columnEditables = new boolean[] {
false, false, false, false, false, false, false
};
public boolean isCellEditable(int row, int column) {
return columnEditables[column];
}
});
bookTable.getColumnModel().getColumn(5).setPreferredWidth(119);
getContentPane().setLayout(groupLayout);
// 设置文本域边框
bookDescTxt.setBorder(new LineBorder(new java.awt.Color(127,157,185), 1, false));
this.fillBookType("search");
this.fillBookType("modify");
this.fillTable(new Book());
}
}
package view;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
public class MainView extends JFrame {
private JPanel desktopPane;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MainView frame = new MainView();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public MainView() {
setTitle("主界面");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(200, 200, 800, 650);
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu menu_1 = new JMenu("图书修改");
menuBar.add(menu_1);
JMenuItem menuItem_2 = new JMenuItem("图书添加");
menuItem_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
BookaddView bookaddview = new BookaddView();
bookaddview.setVisible(true);
desktopPane.add(bookaddview);
}
});
menu_1.add(menuItem_2);
JMenuItem menuItem_3 = new JMenuItem("图书管理");
menuItem_3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
BookmanageView bookmanageview = new BookmanageView();
bookmanageview.setVisible(true);
desktopPane.add(bookmanageview);
}
});
menu_1.add(menuItem_3);
desktopPane = new JPanel();
desktopPane.setBackground(new Color(129, 216, 208));
desktopPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(desktopPane);
GroupLayout gl_desktopPane = new GroupLayout(desktopPane);
gl_desktopPane.setHorizontalGroup(
gl_desktopPane.createParallelGroup(Alignment.LEADING).addGap(0, 785, Short.MAX_VALUE));
gl_desktopPane.setVerticalGroup(
gl_desktopPane.createParallelGroup(Alignment.LEADING).addGap(0, 511, Short.MAX_VALUE));
desktopPane.setLayout(gl_desktopPane);
}
}