Eclipse+Java+Swing+Mysql實現電影購票系統(詳細代碼)
更新時間:2022年01月26日 16:47:19 作者:水堅石青
這篇文章主要介紹了Eclipse+Java+Swing+Mysql實現電影購票系統并附詳細的代碼詳解,需要的小伙伴可以參考一下
一、系統介紹
1.開發(fā)環(huán)境
開發(fā)工具:Eclipse2021
JDK版本:jdk1.8
Mysql版本:8.0.13
2.技術選型
Java+Swing+Mysql
3.系統功能
注冊系統,登錄系統;
3.1.用戶
- 1.歡迎頁:修改用戶姓名和密碼;
- 2.碟片排行榜:影片的詳細信息;
- 3.購票信息:已購買車票的信息;
- 4.場次信息:電影場次的詳細信息;
- 5.充值:充值余額;
- 6.搜索電影:搜索電影的詳細信息;
3.2.管理員
- 1.對用戶進行操作:用戶信息的查詢、刪除;
- 2.對影院進行操作:影院信息的查詢、刪除、增加;
- 3.對場廳進行操作:場廳信息的查詢、刪除、增加;
- 4.對場次進行操作:場次信息的查詢、刪除、增加;
- 5.對電影進行操作:電影信息的查詢、刪除、增加;
4.數據庫
/* ?Navicat Premium Data Transfer ?Source Server ? ? ? ? : MySQL ?Source Server Type ? ?: MySQL ?Source Server Version : 80013 ?Source Host ? ? ? ? ? : 127.0.0.1:3306 ?Source Schema ? ? ? ? : swing_movie_house ?Target Server Type ? ?: MySQL ?Target Server Version : 80013 ?File Encoding ? ? ? ? : 65001 ?Date: 21/09/2021 12:33:55 */ ? SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; ? -- ---------------------------- -- Table structure for cinema -- ---------------------------- DROP TABLE IF EXISTS `cinema`; CREATE TABLE `cinema` ?( ? `cinema_id` int(11) NOT NULL AUTO_INCREMENT, ? `cname` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, ? `address` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, ? PRIMARY KEY (`cinema_id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic; ? -- ---------------------------- -- Records of cinema -- ---------------------------- INSERT INTO `cinema` VALUES (6, '光明影院', '湖北武漢'); INSERT INTO `cinema` VALUES (7, '大同影院', '湖南長沙'); ? -- ---------------------------- -- Table structure for comment -- ---------------------------- DROP TABLE IF EXISTS `comment`; CREATE TABLE `comment` ?( ? `comment_id` int(11) NOT NULL AUTO_INCREMENT, ? `user_id` int(11) NOT NULL, ? `movie_id` int(11) NOT NULL, ? `content` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, ? `datetime` datetime(0) NULL DEFAULT NULL, ? PRIMARY KEY (`comment_id`) USING BTREE, ? INDEX `comment_ibfk_1`(`user_id`) USING BTREE, ? INDEX `comment_ibfk_2`(`movie_id`) USING BTREE, ? CONSTRAINT `comment_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE RESTRICT, ? CONSTRAINT `comment_ibfk_2` FOREIGN KEY (`movie_id`) REFERENCES `movie` (`movie_id`) ON DELETE CASCADE ON UPDATE RESTRICT ) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic; ? -- ---------------------------- -- Records of comment -- ---------------------------- ? -- ---------------------------- -- Table structure for hall -- ---------------------------- DROP TABLE IF EXISTS `hall`; CREATE TABLE `hall` ?( ? `hall_id` int(11) NOT NULL AUTO_INCREMENT, ? `hname` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, ? `capacity` int(11) NULL DEFAULT NULL, ? `cinema_id` int(11) NOT NULL, ? PRIMARY KEY (`hall_id`) USING BTREE, ? INDEX `hall_ibfk_1`(`cinema_id`) USING BTREE, ? CONSTRAINT `hall_ibfk_1` FOREIGN KEY (`cinema_id`) REFERENCES `cinema` (`cinema_id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE = InnoDB AUTO_INCREMENT = 12 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic; ? -- ---------------------------- -- Records of hall -- ---------------------------- INSERT INTO `hall` VALUES (12, '1廳', 50, 6); ? -- ---------------------------- -- Table structure for movie -- ---------------------------- DROP TABLE IF EXISTS `movie`; CREATE TABLE `movie` ?( ? `movie_id` int(11) NOT NULL AUTO_INCREMENT, ? `mname` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, ? `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '電影類型', ? `detail` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, ? `duration` int(11) NULL DEFAULT NULL, ? `img` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '保存圖片名稱', ? PRIMARY KEY (`movie_id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic; ? -- ---------------------------- -- Records of movie -- ---------------------------- INSERT INTO `movie` VALUES (12, '八佰', '抗戰(zhàn)', '八佰', 120, NULL); INSERT INTO `movie` VALUES (13, '春秋', '歷史', '春秋', 150, NULL); INSERT INTO `movie` VALUES (15, '1', '1', '1', 1, NULL); ? -- ---------------------------- -- Table structure for session -- ---------------------------- DROP TABLE IF EXISTS `session`; CREATE TABLE `session` ?( ? `session_id` int(11) NOT NULL AUTO_INCREMENT, ? `hall_id` int(11) NOT NULL, ? `cinema_id` int(11) NOT NULL, ? `movie_id` int(11) NOT NULL, ? `starttime` varchar(11) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, ? `price` double NULL DEFAULT NULL, ? `remain` int(11) NULL DEFAULT NULL, ? PRIMARY KEY (`session_id`) USING BTREE, ? INDEX `hall_id`(`hall_id`) USING BTREE, ? INDEX `cinema_id`(`cinema_id`) USING BTREE, ? INDEX `movie_id`(`movie_id`) USING BTREE, ? CONSTRAINT `session_ibfk_1` FOREIGN KEY (`hall_id`) REFERENCES `hall` (`hall_id`) ON DELETE RESTRICT ON UPDATE RESTRICT, ? CONSTRAINT `session_ibfk_2` FOREIGN KEY (`cinema_id`) REFERENCES `cinema` (`cinema_id`) ON DELETE RESTRICT ON UPDATE RESTRICT, ? CONSTRAINT `session_ibfk_3` FOREIGN KEY (`movie_id`) REFERENCES `movie` (`movie_id`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic; ? -- ---------------------------- -- Records of session -- ---------------------------- INSERT INTO `session` VALUES (14, 12, 6, 12, '09:00:00', 50, 47); ? -- ---------------------------- -- Table structure for ticket -- ---------------------------- DROP TABLE IF EXISTS `ticket`; CREATE TABLE `ticket` ?( ? `ticket_id` int(11) NOT NULL AUTO_INCREMENT, ? `user_id` int(11) NOT NULL, ? `movie_id` int(11) NOT NULL, ? `session_id` int(11) NOT NULL, ? `seat` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, ? PRIMARY KEY (`ticket_id`) USING BTREE, ? INDEX `ticket_ibfk_1`(`user_id`) USING BTREE, ? INDEX `ticket_ibfk_2`(`movie_id`) USING BTREE, ? INDEX `ticket_ibfk_3`(`session_id`) USING BTREE, ? CONSTRAINT `ticket_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, ? CONSTRAINT `ticket_ibfk_2` FOREIGN KEY (`movie_id`) REFERENCES `movie` (`movie_id`) ON DELETE CASCADE ON UPDATE CASCADE, ? CONSTRAINT `ticket_ibfk_3` FOREIGN KEY (`session_id`) REFERENCES `session` (`session_id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE = InnoDB AUTO_INCREMENT = 64 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic; ? -- ---------------------------- -- Records of ticket -- ---------------------------- INSERT INTO `ticket` VALUES (64, 1, 12, 14, '3'); ? -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ?( ? `user_id` int(11) NOT NULL AUTO_INCREMENT, ? `uname` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, ? `passwd` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, ? `type` int(11) NULL DEFAULT 0 COMMENT '0代表普通用戶,1代表管理員', ? `balance` double NULL DEFAULT NULL, ? `level` int(11) NULL DEFAULT NULL, ? PRIMARY KEY (`user_id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic; ? -- ---------------------------- -- Records of user -- ---------------------------- INSERT INTO `user` VALUES (1, 'user', 'user', 0, 161, 1); INSERT INTO `user` VALUES (2, 'admin', 'admin', 1, 1, 1); ? SET FOREIGN_KEY_CHECKS = 1;
5.工程截圖
二、系統展示
1.注冊系統
2.登錄系統
3.用戶-歡迎界面
4.用戶-影片排行榜
5.用戶-購票信息
6.用戶-場次信息
7.用戶-充值余額
8.用戶-搜索電影
9.管理員-首頁
10.管理員-對用戶進行操作
11.管理員-對影院進行操作
12.管理員-對場廳進行操作
13.管理員-對場次進行操作
14.管理員-對電影進行操作
三、部分代碼
AdminMainView.java
package view; ? import java.awt.BorderLayout; import java.awt.Color; import java.awt.EventQueue; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; ? import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JDesktopPane; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; ? import entity.User; ? public class AdminMainView extends JFrame { ?? ?private JPanel main_panel = null; ?? ?private JPanel fun_panel = null; ?? ?private JDesktopPane fundesk = null; ? ?? ?private JButton oper_User = null; ?? ?private JButton oper_Cinema = null; ?? ?private JButton oper_Hall = null; ?? ?private JButton oper_Session = null; ?? ?private JButton oper_Movie = null; ?? ?private JButton back = null; ? ?? ?private JLabel lb_welcome = null; ?? ?private JLabel lb_image = null; ?? ?private User admin = null; ? ?? ?public AdminMainView() { ?? ??? ?init(); ?? ??? ?RegisterListener(); ?? ?} ? ?? ?public AdminMainView(User admin) { ?? ??? ?this.admin = admin; ?? ??? ?init(); ?? ??? ?RegisterListener(); ?? ?} ? ?? ?private void init() { ?? ??? ?main_panel = new JPanel(new BorderLayout()); ?? ??? ?fun_panel = new JPanel(new GridLayout(8, 1, 0, 18)); ?? ??? ?oper_User = new JButton("對用戶進行操作"); ?? ??? ?oper_Cinema = new JButton("對影院進行操作"); ?? ??? ?oper_Hall = new JButton("對場廳進行操作"); ?? ??? ?oper_Session = new JButton("對場次進行操作"); ?? ??? ?oper_Movie = new JButton("對電影進行操作"); ?? ??? ?back = new JButton("返回"); ? ?? ??? ?fun_panel.add(new JLabel()); ?? ??? ?fun_panel.add(oper_User); ?? ??? ?fun_panel.add(oper_Cinema); ?? ??? ?fun_panel.add(oper_Hall); ?? ??? ?fun_panel.add(oper_Session); ?? ??? ?fun_panel.add(oper_Movie); ?? ??? ?fun_panel.add(back); ?? ??? ?fun_panel.add(new JLabel()); ? ?? ??? ?// 設置面板外觀 ?? ??? ?fun_panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createRaisedBevelBorder(), "功能區(qū)")); ? ?? ??? ?lb_welcome = new JLabel("歡 迎 " + admin.getUname() + " 進 入 管 理 員 功 能 界 面"); ?? ??? ?lb_welcome.setFont(new Font("楷體", Font.BOLD, 34)); ?? ??? ?lb_welcome.setForeground(Color.BLUE); ? ?? ??? ?fundesk = new JDesktopPane(); ?? ??? ?ImageIcon img = new ImageIcon(ClassLoader.getSystemResource("image/beijjing3.jpg")); ?? ??? ?lb_image = new JLabel(img); ?? ??? ?lb_image.setBounds(10, 10, img.getIconWidth(), img.getIconHeight()); ?? ??? ?fundesk.add(lb_image, new Integer(Integer.MIN_VALUE)); ? ?? ??? ?main_panel.add(lb_welcome, BorderLayout.NORTH); ?? ??? ?main_panel.add(fun_panel, BorderLayout.EAST); ?? ??? ?main_panel.add(fundesk, BorderLayout.CENTER); ? ?? ??? ?// 為了不讓線程阻塞,來調用線程 ?? ??? ?// 放入隊列當中 ?? ??? ?EventQueue.invokeLater(new Runnable() { ? ?? ??? ??? ?public void run() { ?? ??? ??? ??? ?new Thread(new thread()).start(); ?? ??? ??? ?} ?? ??? ?}); ? ?? ??? ?this.setTitle("管理員功能界面"); ?? ??? ?this.getContentPane().add(main_panel); ?? ??? ?this.setSize(880, 600); ?? ??? ?this.setResizable(false); ?? ??? ?this.setVisible(true); ?? ??? ?this.setLocationRelativeTo(null); ?? ??? ?this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ?? ?} ? ?? ?// 開啟線程使得歡迎標簽動起來 ?? ?// 這是單線程 ?? ?private class thread implements Runnable { ? ?? ??? ?@Override ?? ??? ?public void run() { ?? ??? ??? ?while (true) {// 死循環(huán)讓其一直移動 ?? ??? ??? ??? ?for (int i = 900; i > -700; i--) { ?? ??? ??? ??? ??? ?// for(int i=-100;i<900;i++){ ?? ??? ??? ??? ??? ?try { ?? ??? ??? ??? ??? ??? ?Thread.sleep(10);// 讓線程休眠100毫秒 ?? ??? ??? ??? ??? ?} catch (InterruptedException e) { ?? ??? ??? ??? ??? ??? ?e.printStackTrace(); ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?lb_welcome.setLocation(i, 5); ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ?} ? ?? ?} ? ?? ?private void RegisterListener() { ?? ??? ?oper_User.addActionListener(new ActionListener() { ? ?? ??? ??? ?@Override ?? ??? ??? ?public void actionPerformed(ActionEvent e) { ?? ??? ??? ??? ?operUserView ouv = new operUserView(); ?? ??? ??? ??? ?fundesk.add(ouv); ?? ??? ??? ??? ?ouv.toFront(); ?? ??? ??? ?} ?? ??? ?}); ? ?? ??? ?oper_Cinema.addActionListener(new ActionListener() { ? ?? ??? ??? ?@Override ?? ??? ??? ?public void actionPerformed(ActionEvent e) { ?? ??? ??? ??? ?operCinemaView ocv = new operCinemaView(); ?? ??? ??? ??? ?fundesk.add(ocv); ?? ??? ??? ??? ?ocv.toFront(); ?? ??? ??? ?} ?? ??? ?}); ? ?? ??? ?oper_Hall.addActionListener(new ActionListener() { ? ?? ??? ??? ?@Override ?? ??? ??? ?public void actionPerformed(ActionEvent e) { ?? ??? ??? ??? ?operHallView ohv = new operHallView(); ?? ??? ??? ??? ?fundesk.add(ohv); ?? ??? ??? ??? ?ohv.toFront(); ?? ??? ??? ?} ?? ??? ?}); ? ?? ??? ?oper_Session.addActionListener(new ActionListener() { ? ?? ??? ??? ?@Override ?? ??? ??? ?public void actionPerformed(ActionEvent e) { ?? ??? ??? ??? ?operSessionView osv = new operSessionView(); ?? ??? ??? ??? ?fundesk.add(osv); ?? ??? ??? ??? ?osv.toFront(); ?? ??? ??? ?} ?? ??? ?}); ? ?? ??? ?oper_Movie.addActionListener(new ActionListener() { ? ?? ??? ??? ?@Override ?? ??? ??? ?public void actionPerformed(ActionEvent e) { ?? ??? ??? ??? ?operMovieView omv = new operMovieView(); ?? ??? ??? ??? ?fundesk.add(omv); ?? ??? ??? ??? ?omv.toFront(); ?? ??? ??? ?} ?? ??? ?}); ?? ??? ?back.addActionListener(new ActionListener() { ? ?? ??? ??? ?@Override ?? ??? ??? ?public void actionPerformed(ActionEvent e) { ?? ??? ??? ??? ?new Login(); ?? ??? ??? ??? ?AdminMainView.this.dispose(); ?? ??? ??? ?} ?? ??? ?}); ?? ?} }
MovieInfoView.java
package view; ? import java.awt.Color; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.SimpleDateFormat; import java.util.List; ? import javax.swing.GroupLayout; import javax.swing.GroupLayout.Alignment; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.LayoutStyle.ComponentPlacement; import javax.swing.border.EmptyBorder; import javax.swing.table.DefaultTableModel; ? import entity.Comment; import entity.Movie; import entity.User; import service.CommentService; import service.MovieService; import service.UserService; import serviceimpl.CommentServiceImpl; import serviceimpl.MovieServiceImpl; import serviceimpl.UserServiceImpl; ? public class MovieInfoView extends JFrame { ? ?? ?private JPanel contentPane; ?? ?private JTable table; ?? ?JScrollPane scrollPane = null; ? ?? ?Movie movie = null; ?? ?User user = null; ?? ?MovieService ms = null; ?? ?CommentService cs = null; ?? ?UserService us = null; ? ?? ?public MovieInfoView(Movie movie, User user) { ?? ??? ?this.movie = movie; ?? ??? ?this.user = user; ?? ??? ?ms = new MovieServiceImpl(); ?? ??? ?cs = new CommentServiceImpl(); ?? ??? ?us = new UserServiceImpl(); ?? ??? ?setTitle("用戶選票界面"); ?? ??? ?setBounds(260, 130, 620, 600); ?? ??? ?this.setLocationRelativeTo(null); ? ?? ??? ?contentPane = new JPanel(); ?? ??? ?contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); ?? ??? ?setContentPane(contentPane); ? ?? ??? ?JLabel lblNewLabel = new JLabel("New label"); ?? ??? ?lblNewLabel.setIcon(new ImageIcon("image/" + movie.getImg())); ? ?? ??? ?JLabel label = new JLabel("正在熱映···"); ? ?? ??? ?JLabel lblNewLabel_1 = new JLabel("影片名:"); ?? ??? ?lblNewLabel_1.setFont(new Font("楷體", Font.BOLD, 18)); ? ?? ??? ?JLabel label_1 = new JLabel("類型:"); ? ?? ??? ?JLabel label_2 = new JLabel("時長:"); ? ?? ??? ?JLabel label_3 = new JLabel("電影詳情:"); ? ?? ??? ?JLabel label_4 = new JLabel(movie.getMname()); ?? ??? ?label_4.setFont(new Font("楷體", Font.BOLD, 18)); ? ?? ??? ?JButton btnNewButton = new JButton("購買"); ?? ??? ?btnNewButton.setForeground(Color.BLUE); ?? ??? ?btnNewButton.addActionListener(new ActionListener() { ? ?? ??? ??? ?@Override ?? ??? ??? ?public void actionPerformed(ActionEvent e) { ?? ??? ??? ??? ?new UserUi(user, 3); ?? ??? ??? ??? ?movie.getMovie_id(); ?? ??? ??? ??? ?List<Movie> movieByName = ms.getMovieByName(movie.getMname()); ? ?? ??? ??? ??? ?for (Movie movie2 : movieByName) { ?? ??? ??? ??? ??? ?System.out.println(movie2); ?? ??? ??? ??? ?} ?? ??? ??? ??? ?MovieInfoView.this.dispose(); ? ?? ??? ??? ?} ?? ??? ?}); ? ?? ??? ?JButton button = new JButton("取消"); ?? ??? ?button.setForeground(Color.RED); ?? ??? ?button.addActionListener(new ActionListener() { ?? ??? ??? ?public void actionPerformed(ActionEvent e) { ?? ??? ??? ??? ?MovieInfoView.this.dispose(); ?? ??? ??? ?} ?? ??? ?}); ? ?? ??? ?scrollPane = new JScrollPane(); ?? ??? ?scrollPane.setEnabled(false); ?? ??? ?scrollPane.setVisible(false); ? ?? ??? ?JButton button_1 = new JButton("查看評論"); ?? ??? ?button_1.addActionListener(new ActionListener() { ?? ??? ??? ?public void actionPerformed(ActionEvent e) { ?? ??? ??? ??? ?scrollPane.setVisible(true); ?? ??? ??? ??? ?showComment(); ?? ??? ??? ??? ?table.repaint(); ? ?? ??? ??? ?} ?? ??? ?}); ? ?? ??? ?button_1.setForeground(Color.MAGENTA); ? ?? ??? ?JLabel lblNewLabel_2 = new JLabel("歡迎來到電影詳情界面"); ?? ??? ?lblNewLabel_2.setFont(new Font("新宋體", Font.BOLD, 20)); ?? ??? ?lblNewLabel_2.setForeground(Color.BLACK); ? ?? ??? ?JLabel label_5 = new JLabel(movie.getType()); ? ?? ??? ?JLabel label_6 = new JLabel(movie.getDuration() + "分鐘"); ? ?? ??? ?JLabel label_7 = new JLabel(movie.getDetail()); ? ?? ??? ?GroupLayout gl_contentPane = new GroupLayout(contentPane); ?? ??? ?gl_contentPane.setHorizontalGroup(gl_contentPane.createParallelGroup(Alignment.TRAILING).addGroup(gl_contentPane ?? ??? ??? ??? ?.createSequentialGroup() ?? ??? ??? ??? ?.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING) ?? ??? ??? ??? ??? ??? ?.addGroup(gl_contentPane.createSequentialGroup().addGap(218) ?? ??? ??? ??? ??? ??? ??? ??? ?.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addGroup(gl_contentPane.createSequentialGroup().addComponent(label_3) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addPreferredGap(ComponentPlacement.RELATED).addComponent(label_7, ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?GroupLayout.PREFERRED_SIZE, 70, GroupLayout.PREFERRED_SIZE)) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addGroup(gl_contentPane.createSequentialGroup().addComponent(lblNewLabel_1) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addPreferredGap(ComponentPlacement.RELATED) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addComponent(label_4, GroupLayout.PREFERRED_SIZE, 137, ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?GroupLayout.PREFERRED_SIZE)) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addGroup(gl_contentPane.createSequentialGroup() ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addComponent(label_2) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addGroup(gl_contentPane.createSequentialGroup() ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addPreferredGap(ComponentPlacement.RELATED) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addComponent(label_1))) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addGap(4) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addComponent(label_6, GroupLayout.PREFERRED_SIZE, 55, ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?GroupLayout.PREFERRED_SIZE) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addComponent(label_5, GroupLayout.PREFERRED_SIZE, 82, ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?GroupLayout.PREFERRED_SIZE))) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addGroup(gl_contentPane.createSequentialGroup().addComponent(btnNewButton) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addGap(18) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addComponent(button, GroupLayout.PREFERRED_SIZE, 71, ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?GroupLayout.PREFERRED_SIZE) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addGap(18).addComponent(button_1)))) ?? ??? ??? ??? ??? ??? ?.addGroup(gl_contentPane.createSequentialGroup().addGap(36).addComponent(label)) ?? ??? ??? ??? ??? ??? ?.addGroup(gl_contentPane.createSequentialGroup().addGap(170).addComponent(lblNewLabel_2)) ?? ??? ??? ??? ??? ??? ?.addComponent(lblNewLabel, GroupLayout.PREFERRED_SIZE, 200, GroupLayout.PREFERRED_SIZE) ?? ??? ??? ??? ??? ??? ?.addGroup(gl_contentPane.createSequentialGroup().addGap(84).addComponent(scrollPane, ?? ??? ??? ??? ??? ??? ??? ??? ?GroupLayout.PREFERRED_SIZE, 464, GroupLayout.PREFERRED_SIZE))) ?? ??? ??? ??? ?.addContainerGap(46, Short.MAX_VALUE))); ?? ??? ?gl_contentPane.setVerticalGroup(gl_contentPane.createParallelGroup(Alignment.TRAILING) ?? ??? ??? ??? ?.addGroup(gl_contentPane.createSequentialGroup() ?? ??? ??? ??? ??? ??? ?.addGroup(gl_contentPane ?? ??? ??? ??? ??? ??? ??? ??? ?.createParallelGroup(Alignment.LEADING) ?? ??? ??? ??? ??? ??? ??? ??? ?.addGroup(gl_contentPane.createSequentialGroup().addGap(46).addComponent(label) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addPreferredGap(ComponentPlacement.UNRELATED) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addComponent(lblNewLabel, GroupLayout.DEFAULT_SIZE, 277, Short.MAX_VALUE)) ?? ??? ??? ??? ??? ??? ??? ??? ?.addGroup(gl_contentPane.createSequentialGroup().addContainerGap() ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addComponent(lblNewLabel_2).addGap(58) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addComponent(lblNewLabel_1).addComponent(label_4, ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?GroupLayout.PREFERRED_SIZE, 21, GroupLayout.PREFERRED_SIZE)) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addPreferredGap(ComponentPlacement.RELATED, 53, Short.MAX_VALUE) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addComponent(label_1).addComponent(label_5)) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addGap(18) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addComponent(label_2).addComponent(label_6)) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addGap(18) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addComponent(label_3).addComponent(label_7)) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addGap(125) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addComponent(btnNewButton).addComponent(button) ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?.addComponent(button_1)))) ?? ??? ??? ??? ??? ??? ?.addGap(28) ?? ??? ??? ??? ??? ??? ?.addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 139, GroupLayout.PREFERRED_SIZE))); ? ?? ??? ?showComment(); ?? ??? ?scrollPane.setViewportView(table); ?? ??? ?contentPane.setLayout(gl_contentPane); ?? ??? ?this.setVisible(true); ?? ?} ? ?? ?public void showComment() { ?? ??? ?List<Comment> commlist = cs.getAllCommentByMovieId(movie.getMovie_id()); ?? ??? ?int recordrow = 0; ? ?? ??? ?if (commlist != null) { ?? ??? ??? ?recordrow = commlist.size(); ?? ??? ?} ?? ??? ?String[][] rinfo = new String[recordrow][3]; ? ?? ??? ?SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd hh:mm"); ?? ??? ?for (int i = 0; i < recordrow; i++) { ?? ??? ??? ?for (int j = 0; j < 3; j++) { ?? ??? ??? ??? ?rinfo[i][j] = new String(); ? ?? ??? ??? ??? ?rinfo[i][0] = us.queryUserById(commlist.get(i).getUser_id()).getUname(); ?? ??? ??? ??? ?rinfo[i][1] = commlist.get(i).getContent(); ?? ??? ??? ??? ?rinfo[i][2] = sdf.format(commlist.get(i).getDatetime()); ?? ??? ??? ?} ?? ??? ?} ? ?? ??? ?String[] tbheadnames = { "用戶名", "評論內容", "評論時間" }; ? ?? ??? ?table = new JTable(rinfo, tbheadnames); ?? ??? ?table.setBorder(null); ?? ??? ?table.setRowHeight(20); ?? ??? ?table.setEnabled(false); ?? ??? ?table.getColumnModel().getColumn(0).setPreferredWidth(30); ?? ??? ?table.getTableHeader().setFont(new Font("楷體", 1, 20)); ?? ??? ?table.getTableHeader().setBackground(Color.CYAN); ?? ??? ?table.getTableHeader().setReorderingAllowed(false); // 不可交換順序 ?? ??? ?table.getTableHeader().setResizingAllowed(true); // 不可拉動表格 ? ?? ??? ?scrollPane.add(table); ?? ??? ?scrollPane.setBorder(null); ? ?? ??? ?table.repaint(); ? ?? ?} }
operCinemaView.java
package view; ? import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.List; ? import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JInternalFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.event.TableModelListener; import javax.swing.table.TableModel; ? import entity.Cinema; import service.CinemaService; import serviceimpl.CinemaServiceImpl; ? public class operCinemaView extends JInternalFrame { ?? ?private JPanel pl_main = null; ?? ?private JPanel pl_button = null; ?? ?private JPanel pl_text = null; ?? ?private JTable table = null; ?? ?private JButton btn_add = null; ?? ?private JButton btn_query = null; ?? ?private JButton btn_del = null; ?? ?private JComboBox<String> cb_query = null; ?? ?private JButton btn_back = null; ?? ?private JLabel lb_name = null; ?? ?private JLabel lb_address = null; ?? ?private JTextField tf_qname = null;// 查詢時輸入的名稱 ?? ?private JTextField tf_name = null;// 添加輸入的名稱 ?? ?private JTextField tf_address = null; ?? ?private CinemaService cinemabiz = null; ?? ?private List<Cinema> cinemaList = null; ?? ?private CinemaInfoTableModel infoTableModel = null; //?? ?private List<Hall> hallList = null; //?? ?private List<Session> sessionList = null; //?? ?private HallBiz hallbiz = null; //?? ?private SessionBiz sessionbiz = null; ? ?? ?public operCinemaView() { ?? ??? ?cinemabiz = new CinemaServiceImpl(); //?? ??? ?hallbiz = new HallBizImpl(); //?? ??? ?sessionbiz = new SessionBizImpl(); ?? ??? ?init(); ?? ??? ?RegisterListener(); ?? ?} ? ?? ?private void init() { ?? ??? ?pl_main = new JPanel(new BorderLayout()); ?? ??? ?pl_button = new JPanel(new GridLayout(8, 1, 0, 40)); ?? ??? ?pl_text = new JPanel(new GridLayout(1, 4)); ?? ??? ?cinemaList = new ArrayList<Cinema>(); ?? ??? ?table = new JTable(); ?? ??? ?refreshTable(cinemaList); ?? ??? ?cb_query = new JComboBox<String>(new String[] { "查詢所有影院", "按名字查找影院" }); ?? ??? ?tf_qname = new JTextField(8); ?? ??? ?tf_qname.setEnabled(false); ?? ??? ?btn_query = new JButton("查詢"); ?? ??? ?btn_add = new JButton("增添影院"); ?? ??? ?btn_del = new JButton("刪除影院"); ?? ??? ?btn_del.setEnabled(false); ?? ??? ?btn_back = new JButton("退出窗口"); ?? ??? ?lb_name = new JLabel("影院名稱: "); ?? ??? ?tf_name = new JTextField(8); ?? ??? ?lb_address = new JLabel("影院地址: "); ?? ??? ?tf_address = new JTextField(12); ?? ??? ?pl_main.add(table.getTableHeader(), BorderLayout.PAGE_START); ?? ??? ?pl_main.add(table); ?? ??? ?pl_main.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(null, null), "查詢信息")); ?? ??? ?pl_button.add(new JLabel()); ?? ??? ?pl_button.add(cb_query); ?? ??? ?pl_button.add(tf_qname); ?? ??? ?pl_button.add(btn_query); ?? ??? ?pl_button.add(btn_add); ?? ??? ?pl_button.add(btn_del); ?? ??? ?pl_button.add(new JLabel()); ?? ??? ?pl_button.add(btn_back); ? ?? ??? ?pl_text.add(lb_name); ?? ??? ?pl_text.add(tf_name); ?? ??? ?pl_text.add(lb_address); ?? ??? ?pl_text.add(tf_address); ?? ??? ?this.add(pl_main, BorderLayout.CENTER); ?? ??? ?this.add(pl_button, BorderLayout.EAST); ?? ??? ?this.add(pl_text, BorderLayout.NORTH); ?? ??? ?this.setVisible(true); ?? ??? ?this.setTitle("影院操作界面"); ?? ??? ?this.setSize(700, 530); ?? ??? ?this.setIconifiable(true); ?? ??? ?this.setClosable(true); ?? ??? ?this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); ?? ?} ? ?? ?private void RegisterListener() { ? ?? ??? ?table.addMouseListener(new MouseAdapter() { ?? ??? ??? ?@Override ?? ??? ??? ?public void mouseClicked(MouseEvent e) { ?? ??? ??? ??? ?if (table.getSelectedRow() != -1) { ?? ??? ??? ??? ??? ?btn_del.setEnabled(true); ?? ??? ??? ??? ?} ?? ??? ??? ??? ?int row = table.getSelectedRow(); ?? ??? ??? ??? ?String name = table.getValueAt(row, 1).toString(); ?? ??? ??? ??? ?String address = table.getValueAt(row, 2).toString(); ?? ??? ??? ??? ?tf_name.setText(name); ?? ??? ??? ??? ?tf_address.setText(address); ?? ??? ??? ?} ?? ??? ?}); ?? ??? ?cb_query.addActionListener(new ActionListener() { ? ?? ??? ??? ?@Override ?? ??? ??? ?public void actionPerformed(ActionEvent e) { ?? ??? ??? ??? ?if (cb_query.getSelectedIndex() + 1 == 2) { ?? ??? ??? ??? ??? ?tf_qname.setEnabled(true); ?? ??? ??? ??? ?} else { ?? ??? ??? ??? ??? ?tf_qname.setEnabled(false); ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ?}); ?? ??? ?btn_query.addActionListener(new ActionListener() { ? ?? ??? ??? ?@Override ?? ??? ??? ?public void actionPerformed(ActionEvent e) { ?? ??? ??? ??? ?if (cb_query.getSelectedIndex() + 1 == 1) { ?? ??? ??? ??? ??? ?cinemaList = cinemabiz.queryAllCinema(); ?? ??? ??? ??? ??? ?refreshTable(cinemaList); ?? ??? ??? ??? ?} else { ?? ??? ??? ??? ??? ?String name = tf_qname.getText().trim(); ?? ??? ??? ??? ??? ?cinemaList = cinemabiz.queryCinemaByName(name); ?? ??? ??? ??? ??? ?refreshTable(cinemaList); ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ?}); ? ?? ??? ?btn_add.addActionListener(new ActionListener() { ? ?? ??? ??? ?@Override ?? ??? ??? ?public void actionPerformed(ActionEvent e) { ?? ??? ??? ??? ?String name = tf_name.getText().trim(); ?? ??? ??? ??? ?String address = tf_address.getText().trim(); ?? ??? ??? ??? ?if (name.equals("")) { ?? ??? ??? ??? ??? ?JOptionPane.showMessageDialog(operCinemaView.this, "影院名稱不能為空!"); ?? ??? ??? ??? ?} else if (address.equals("")) { ?? ??? ??? ??? ??? ?JOptionPane.showMessageDialog(operCinemaView.this, "影院地址不能為空!"); ?? ??? ??? ??? ?} else { ?? ??? ??? ??? ??? ?int flag = JOptionPane.showConfirmDialog(operCinemaView.this, "確認是否添加?", "確認信息", ?? ??? ??? ??? ??? ??? ??? ?JOptionPane.YES_NO_OPTION); ?? ??? ??? ??? ??? ?if (flag == JOptionPane.YES_OPTION) { ?? ??? ??? ??? ??? ??? ?Cinema cinema = new Cinema(name, address); ?? ??? ??? ??? ??? ??? ?boolean res = cinemabiz.addCinema(cinema); ?? ??? ??? ??? ??? ??? ?if (res) { ?? ??? ??? ??? ??? ??? ??? ?cinemaList = cinemabiz.queryAllCinema(); ?? ??? ??? ??? ??? ??? ??? ?refreshTable(cinemaList); ?? ??? ??? ??? ??? ??? ??? ?JOptionPane.showMessageDialog(operCinemaView.this, "添加成功!"); ?? ??? ??? ??? ??? ??? ?} else { ?? ??? ??? ??? ??? ??? ??? ?JOptionPane.showMessageDialog(operCinemaView.this, "添加失敗!"); ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ?}); ? ?? ??? ?btn_del.addActionListener(new ActionListener() { ? ?? ??? ??? ?@Override ?? ??? ??? ?public void actionPerformed(ActionEvent e) { ?? ??? ??? ??? ?int row = table.getSelectedRow(); ?? ??? ??? ??? ?int id = (Integer) table.getValueAt(row, 0); ?? ??? ??? ??? ?int flag = JOptionPane.showConfirmDialog(operCinemaView.this, "確認是否刪除此影院?", "確認信息", ?? ??? ??? ??? ??? ??? ?JOptionPane.YES_NO_OPTION); ?? ??? ??? ??? ?if (flag == JOptionPane.YES_OPTION) { ?? ??? ??? ??? ??? ?boolean res = cinemabiz.deleteCinemaById(id); ?? ??? ??? ??? ??? ?/* ?? ??? ??? ??? ??? ? * if(res) { //更新數據 hallList = hallbiz.queryAllHall(); int hid = 0; for(int i = ?? ??? ??? ??? ??? ? * 0; i < hallList.size(); i++) { if(id == hallList.get(i).getCid()) { hid = ?? ??? ??? ??? ??? ? * hallList.get(i).getId(); hallbiz.delHall(hid); } } sessionList = ?? ??? ??? ??? ??? ? * sessionbiz.queryAllSession(); for(int i = 0; i < sessionList.size(); i++) { ?? ??? ??? ??? ??? ? * if(hid == sessionList.get(i).getHid()) { ?? ??? ??? ??? ??? ? * sessionbiz.delSession(sessionList.get(i).getId()); } } } ?? ??? ??? ??? ??? ? */ ?? ??? ??? ??? ??? ?cinemaList = cinemabiz.queryAllCinema(); ?? ??? ??? ??? ??? ?refreshTable(cinemaList); ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ?}); ?? ??? ?btn_back.addActionListener(new ActionListener() { ? ?? ??? ??? ?@Override ?? ??? ??? ?public void actionPerformed(ActionEvent e) { ?? ??? ??? ??? ?operCinemaView.this.dispose(); ?? ??? ??? ?} ?? ??? ?}); ?? ?} ? ?? ?public class CinemaInfoTableModel implements TableModel { ?? ??? ?public List<Cinema> cinemaList = null; ? ?? ??? ?public CinemaInfoTableModel(List<Cinema> cinemaList) { ?? ??? ??? ?this.cinemaList = cinemaList; ?? ??? ?} ? ?? ??? ?@Override ?? ??? ?public int getRowCount() { ?? ??? ??? ?return cinemaList.size(); ?? ??? ?} ? ?? ??? ?@Override ?? ??? ?public int getColumnCount() { ?? ??? ??? ?return 3; ?? ??? ?} ? ?? ??? ?@Override ?? ??? ?public String getColumnName(int columnIndex) { ?? ??? ??? ?if (columnIndex == 0) { ?? ??? ??? ??? ?return "影院ID"; ?? ??? ??? ?} else if (columnIndex == 1) { ?? ??? ??? ??? ?return "影院名稱"; ?? ??? ??? ?} else if (columnIndex == 2) { ?? ??? ??? ??? ?return "影院地址"; ?? ??? ??? ?} else { ?? ??? ??? ??? ?return "出錯"; ?? ??? ??? ?} ?? ??? ?} ? ?? ??? ?@Override ?? ??? ?public Class<?> getColumnClass(int columnIndex) { ?? ??? ??? ?return String.class; ?? ??? ?} ? ?? ??? ?@Override ?? ??? ?public boolean isCellEditable(int rowIndex, int columnIndex) { ?? ??? ??? ?return false; ?? ??? ?} ? ?? ??? ?@Override ?? ??? ?public Object getValueAt(int rowIndex, int columnIndex) { ?? ??? ??? ?Cinema cinema = cinemaList.get(rowIndex); ?? ??? ??? ?if (columnIndex == 0) { ?? ??? ??? ??? ?return cinema.getCinema_id(); ?? ??? ??? ?} else if (columnIndex == 1) { ?? ??? ??? ??? ?return cinema.getCname(); ?? ??? ??? ?} else if (columnIndex == 2) { ?? ??? ??? ??? ?return cinema.getAddress(); ?? ??? ??? ?} else { ?? ??? ??? ??? ?return "出錯"; ?? ??? ??? ?} ?? ??? ?} ? ?? ??? ?@Override ?? ??? ?public void setValueAt(Object aValue, int rowIndex, int columnIndex) { ?? ??? ??? ?// TODO Auto-generated method stub ? ?? ??? ?} ? ?? ??? ?@Override ?? ??? ?public void addTableModelListener(TableModelListener l) { ?? ??? ??? ?// TODO Auto-generated method stub ? ?? ??? ?} ? ?? ??? ?@Override ?? ??? ?public void removeTableModelListener(TableModelListener l) { ?? ??? ??? ?// TODO Auto-generated method stub ? ?? ??? ?} ?? ?} ? ?? ?private void refreshTable(List<Cinema> cinemaList) { ?? ??? ?infoTableModel = new CinemaInfoTableModel(cinemaList); ?? ??? ?table.setModel(infoTableModel); ?? ??? ?table.setRowHeight(20); ?? ?} }
operHallView.java
package view; ? import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.List; ? import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JInternalFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.event.TableModelListener; import javax.swing.table.TableModel; ? import entity.Cinema; import entity.Hall; import entity.Session; import service.CinemaService; import service.HallService; import serviceimpl.CinemaServiceImpl; import serviceimpl.HallServiceImpl; import serviceimpl.SessionServiceImpl; import util.Check; ? public class operHallView extends JInternalFrame { ?? ?private JPanel pl_main = null; ?? ?private JPanel pl_button = null; ?? ?private JPanel pl_text = null; ?? ?private JTable table = null; ?? ?private JButton btn_add = null; ?? ?private JButton btn_del = null; ?? ?private JButton btn_query = null; ?? ?private JButton btn_back = null; ?? ?private JLabel lb_name = null; ?? ?private JLabel lb_cid = null; ?? ?private JLabel lb_capacity = null; ?? ?private JTextField tf_name = null;// 添加輸入的名稱 ?? ?private JTextField tf_cid = null;// 添加時輸入的所屬影院id ?? ?private JTextField tf_capacity = null;// 添加輸入的名稱 ?? ?private HallService hallbiz = null; ?? ?private CinemaService cinemabiz = null; ?? ?private SessionServiceImpl sessionbiz = null; ?? ?private List<Hall> hallList = null; ?? ?private HallInfoTableModel infoTableModel = null; ? ?? ?public operHallView() { ?? ??? ?hallbiz = new HallServiceImpl(); ?? ??? ?cinemabiz = new CinemaServiceImpl();// 查詢出所有的影院與cid進行匹配,顯示影院名稱 ?? ??? ?sessionbiz = new SessionServiceImpl(); ?? ??? ?init(); ?? ??? ?RegisterListener(); ?? ?} ? ?? ?private void init() { ?? ??? ?pl_main = new JPanel(new BorderLayout()); ?? ??? ?pl_button = new JPanel(new GridLayout(6, 1, 0, 40)); ?? ??? ?pl_text = new JPanel(new GridLayout(1, 6)); ?? ??? ?hallList = new ArrayList<Hall>(); ?? ??? ?table = new JTable(); ?? ??? ?// 綁定JTabel,呈現數據 ?? ??? ?refreshTable(hallList); ?? ??? ?btn_query = new JButton("查詢所有場廳"); ?? ??? ?btn_add = new JButton("增添場廳"); ?? ??? ?btn_del = new JButton("刪除場廳"); ?? ??? ?btn_del.setEnabled(false); ?? ??? ?btn_back = new JButton("退出窗口"); ?? ??? ?tf_name = new JTextField(8); ?? ??? ?tf_cid = new JTextField(8); ?? ??? ?tf_capacity = new JTextField(8); ?? ??? ?lb_name = new JLabel("場廳名稱"); ?? ??? ?lb_cid = new JLabel("所屬影院id"); ?? ??? ?lb_capacity = new JLabel("場廳容量"); ?? ??? ?pl_main.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(null, null), "查詢信息")); ?? ??? ?pl_main.add(table.getTableHeader(), BorderLayout.PAGE_START); ?? ??? ?pl_main.add(table); ?? ??? ?this.add(pl_main, BorderLayout.CENTER); ? ?? ??? ?pl_button.add(new JLabel()); ?? ??? ?pl_button.add(btn_query); ?? ??? ?pl_button.add(btn_add); ?? ??? ?pl_button.add(btn_del); ?? ??? ?pl_button.add(new JLabel()); ?? ??? ?pl_button.add(btn_back); ?? ??? ?this.add(pl_button, BorderLayout.EAST); ? ?? ??? ?pl_text.add(lb_name); ?? ??? ?pl_text.add(tf_name); ?? ??? ?pl_text.add(lb_cid); ?? ??? ?pl_text.add(tf_cid); ?? ??? ?pl_text.add(lb_capacity); ?? ??? ?pl_text.add(tf_capacity); ?? ??? ?this.add(pl_text, BorderLayout.NORTH); ?? ??? ?this.setVisible(true); ?? ??? ?this.setTitle("場廳操作界面"); ?? ??? ?this.setSize(700, 530); ?? ??? ?this.setIconifiable(true); ?? ??? ?this.setClosable(true); ?? ??? ?this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); ?? ?} ? ?? ?private void RegisterListener() { ?? ??? ?table.addMouseListener(new MouseAdapter() { ?? ??? ??? ?@Override ?? ??? ??? ?public void mouseClicked(MouseEvent e) { ?? ??? ??? ??? ?// 加入選中一行,刪除按鈕變?yōu)榭捎? ?? ??? ??? ??? ?if (table.getSelectedRow() != -1) { ?? ??? ??? ??? ??? ?btn_del.setEnabled(true); ?? ??? ??? ??? ?} ?? ??? ??? ??? ?int row = table.getSelectedRow(); ?? ??? ??? ??? ?String name = table.getValueAt(row, 1).toString(); ?? ??? ??? ??? ?String cid = table.getValueAt(row, 2).toString(); ?? ??? ??? ??? ?String capacity = table.getValueAt(row, 3).toString(); ?? ??? ??? ??? ?tf_name.setText(name); ?? ??? ??? ??? ?tf_cid.setText(cid); ?? ??? ??? ??? ?tf_capacity.setText(capacity); ?? ??? ??? ?} ?? ??? ?}); ? ?? ??? ?btn_add.addActionListener(new ActionListener() { ? ?? ??? ??? ?@Override ?? ??? ??? ?public void actionPerformed(ActionEvent e) { ?? ??? ??? ??? ?String name = tf_name.getText().trim(); ?? ??? ??? ??? ?String cid = tf_cid.getText().trim(); ?? ??? ??? ??? ?String capacity = tf_capacity.getText().trim(); ?? ??? ??? ??? ?if (name.equals("")) { ?? ??? ??? ??? ??? ?JOptionPane.showMessageDialog(operHallView.this, "場廳名稱不能為空!"); ?? ??? ??? ??? ?} else if (cid.equals("")) { ?? ??? ??? ??? ??? ?JOptionPane.showMessageDialog(operHallView.this, "所屬影院id不能為空!"); ?? ??? ??? ??? ?} else if (capacity.equals("")) { ?? ??? ??? ??? ??? ?JOptionPane.showMessageDialog(operHallView.this, "場廳容量不能為空!"); ?? ??? ??? ??? ?} else if (!Check.isNumber(cid)) { ?? ??? ??? ??? ??? ?JOptionPane.showMessageDialog(operHallView.this, "所屬影院id只能為數字!"); ?? ??? ??? ??? ?} else if (!Check.isNumber(capacity)) { ?? ??? ??? ??? ??? ?JOptionPane.showMessageDialog(operHallView.this, "場廳容量只能為數字!"); ?? ??? ??? ??? ?} else { ?? ??? ??? ??? ??? ?int flag = JOptionPane.showConfirmDialog(operHallView.this, "是否添加此場廳?", "確認信息", ?? ??? ??? ??? ??? ??? ??? ?JOptionPane.YES_NO_OPTION); ?? ??? ??? ??? ??? ?if (flag == JOptionPane.YES_OPTION) { ?? ??? ??? ??? ??? ??? ?Hall hall = new Hall(name, new Integer(capacity), new Integer(cid)); ?? ??? ??? ??? ??? ??? ?boolean res = hallbiz.addHall(hall); ? ?? ??? ??? ??? ??? ??? ?hallList = hallbiz.queryAllHall(); ?? ??? ??? ??? ??? ??? ?refreshTable(hallList); ?? ??? ??? ??? ??? ??? ?if (res) { ?? ??? ??? ??? ??? ??? ??? ?JOptionPane.showMessageDialog(operHallView.this, "添加成功!"); ?? ??? ??? ??? ??? ??? ?} else { ?? ??? ??? ??? ??? ??? ??? ?JOptionPane.showMessageDialog(operHallView.this, "添加失敗!"); ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ?}); ?? ??? ?btn_query.addActionListener(new ActionListener() { ? ?? ??? ??? ?@Override ?? ??? ??? ?public void actionPerformed(ActionEvent e) { ?? ??? ??? ??? ?// 清除數據,防止累加 ?? ??? ??? ??? ?if (hallList != null) { ?? ??? ??? ??? ??? ?hallList.clear(); ?? ??? ??? ??? ?} ?? ??? ??? ??? ?hallList = hallbiz.queryAllHall(); ?? ??? ??? ??? ?refreshTable(hallList); ?? ??? ??? ?} ?? ??? ?}); ?? ??? ?btn_del.addActionListener(new ActionListener() { ? ?? ??? ??? ?@Override ?? ??? ??? ?public void actionPerformed(ActionEvent e) { ?? ??? ??? ??? ?int row = table.getSelectedRow(); ?? ??? ??? ??? ?int id = (Integer) table.getValueAt(row, 0); ?? ??? ??? ??? ?int flag = JOptionPane.showConfirmDialog(operHallView.this, "確認是否刪除此場廳?", "確認信息", ?? ??? ??? ??? ??? ??? ?JOptionPane.YES_NO_OPTION); ?? ??? ??? ??? ?if (flag == JOptionPane.YES_OPTION) { ?? ??? ??? ??? ??? ?boolean res = hallbiz.delHall(id); ?? ??? ??? ??? ??? ?if (res) { ?? ??? ??? ??? ??? ??? ?JOptionPane.showMessageDialog(operHallView.this, "刪除成功!"); ?? ??? ??? ??? ??? ??? ?// 更新數據 ?? ??? ??? ??? ??? ??? ?List<Session> sessionList = new ArrayList<Session>(); ?? ??? ??? ??? ??? ??? ?sessionList = sessionbiz.queryAllSession(); ?? ??? ??? ??? ??? ??? ?// 刪除某場廳后,對應的場次也進行刪除 ?? ??? ??? ??? ??? ??? ?int sid = 0; ?? ??? ??? ??? ??? ??? ?for (int i = 0; i < sessionList.size(); i++) { ?? ??? ??? ??? ??? ??? ??? ?if (id == sessionList.get(i).getHall_id()) { ?? ??? ??? ??? ??? ??? ??? ??? ?sid = sessionList.get(i).getSession_id(); ?? ??? ??? ??? ??? ??? ??? ??? ?sessionbiz.delSession(sid); ?? ??? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ??? ?hallList = hallbiz.queryAllHall(); ?? ??? ??? ??? ??? ??? ?refreshTable(hallList);// 更新顯示數據 ?? ??? ??? ??? ??? ?} else { ?? ??? ??? ??? ??? ??? ?JOptionPane.showMessageDialog(operHallView.this, "刪除失?。?); ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ?}); ?? ??? ?btn_back.addActionListener(new ActionListener() { ? ?? ??? ??? ?@Override ?? ??? ??? ?public void actionPerformed(ActionEvent e) { ?? ??? ??? ??? ?operHallView.this.dispose(); ?? ??? ??? ?} ?? ??? ?}); ?? ?} ? ?? ?private class HallInfoTableModel implements TableModel { ?? ??? ?public List<Hall> hallList = null; ? ?? ??? ?public HallInfoTableModel(List<Hall> hallList) { ?? ??? ??? ?this.hallList = hallList; ?? ??? ?} ? ?? ??? ?// JTable顯示的行數 ?? ??? ?@Override ?? ??? ?public int getRowCount() { ?? ??? ??? ?return hallList.size(); ?? ??? ?} ? ?? ??? ?// JTable顯示的列數 ?? ??? ?@Override ?? ??? ?public int getColumnCount() { ?? ??? ??? ?return 4; ?? ??? ?} ? ?? ??? ?// JTable顯示各行的名稱 ?? ??? ?@Override ?? ??? ?public String getColumnName(int columnIndex) { ?? ??? ??? ?if (columnIndex == 0) { ?? ??? ??? ??? ?return "場廳ID"; ?? ??? ??? ?} else if (columnIndex == 1) { ?? ??? ??? ??? ?return "場廳名稱"; ?? ??? ??? ?} else if (columnIndex == 2) { ?? ??? ??? ??? ?return "所屬影院"; ?? ??? ??? ?} else if (columnIndex == 3) { ?? ??? ??? ??? ?return "場廳容量"; ?? ??? ??? ?} else { ?? ??? ??? ??? ?return "出錯"; ?? ??? ??? ?} ?? ??? ?} ? ?? ??? ?// JTable列的數據類型 ?? ??? ?@Override ?? ??? ?public Class<?> getColumnClass(int columnIndex) { ?? ??? ??? ?return String.class; ?? ??? ?} ? ?? ??? ?// 單元格是否可編輯 ?? ??? ?@Override ?? ??? ?public boolean isCellEditable(int rowIndex, int columnIndex) { ?? ??? ??? ?return false; ?? ??? ?} ? ?? ??? ?// 每行單元格顯示的數據 ?? ??? ?@Override ?? ??? ?public Object getValueAt(int rowIndex, int columnIndex) { ?? ??? ??? ?Hall hall = hallList.get(rowIndex); ?? ??? ??? ?Cinema cinema = null; ?? ??? ??? ?if (columnIndex == 0) { ?? ??? ??? ??? ?return hall.getHall_id(); ?? ??? ??? ?} else if (columnIndex == 1) { ?? ??? ??? ??? ?return hall.getHname(); ?? ??? ??? ?} else if (columnIndex == 2) { ?? ??? ??? ??? ?List<Cinema> cinemaList = cinemabiz.queryAllCinema(); ?? ??? ??? ??? ?for (int i = 0; i < cinemaList.size(); i++) { ?? ??? ??? ??? ??? ?if (hall.getCinema_id() == cinemaList.get(i).getCinema_id()) { ?? ??? ??? ??? ??? ??? ?cinema = cinemaList.get(i); ?? ??? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ??? ?return cinema.getCname(); ?? ??? ??? ??? ?// return hall.getCid(); ?? ??? ??? ?} else if (columnIndex == 3) { ?? ??? ??? ??? ?return hall.getCapacity(); ?? ??? ??? ?} else { ?? ??? ??? ??? ?return "出錯"; ?? ??? ??? ?} ?? ??? ?} ? ?? ??? ?@Override ?? ??? ?public void setValueAt(Object aValue, int rowIndex, int columnIndex) { ?? ??? ??? ?// TODO Auto-generated method stub ? ?? ??? ?} ? ?? ??? ?@Override ?? ??? ?public void addTableModelListener(TableModelListener l) { ?? ??? ??? ?// TODO Auto-generated method stub ? ?? ??? ?} ? ?? ??? ?@Override ?? ??? ?public void removeTableModelListener(TableModelListener l) { ?? ??? ??? ?// TODO Auto-generated method stub ? ?? ??? ?} ?? ?} ? ?? ?private void refreshTable(List<Hall> hallList) { ?? ??? ?infoTableModel = new HallInfoTableModel(hallList); ?? ??? ?table.setModel(infoTableModel); ?? ??? ?table.setRowHeight(20); ?? ?} }
到此這篇關于Eclipse+Java+Swing+Mysql實現電影購票系統(詳細代碼)的文章就介紹到這了,更多相關Eclipse+Java+Swing+Mysql實現電影購票系統內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Spring Boot 中PageHelper 插件使用配置思路詳解
這篇文章主要介紹了Spring Boot 中PageHelper 插件使用配置及實現思路,通過引入myabtis和pagehelper依賴,在yml中配置mybatis掃描和實體類,具體實現方法跟隨小編一起看看吧2021-08-08