亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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 插件使用配置思路詳解

    這篇文章主要介紹了Spring Boot 中PageHelper 插件使用配置及實現思路,通過引入myabtis和pagehelper依賴,在yml中配置mybatis掃描和實體類,具體實現方法跟隨小編一起看看吧
    2021-08-08
  • Java線程數究竟設多少合理

    Java線程數究竟設多少合理

    這篇文章主要介紹了Java線程數究竟設多少合理,對線程感興趣的同學,可以參考下
    2021-04-04
  • java信號量控制線程打印順序的示例分享

    java信號量控制線程打印順序的示例分享

    這篇文章主要介紹了java信號量控制線程打印順序的示例,如ABCABC這樣輸出線程,大家參考使用吧
    2014-01-01
  • java后臺處理前端傳的json串方法

    java后臺處理前端傳的json串方法

    今天小編就為大家分享一篇java后臺處理前端傳的json串方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • Java后臺判斷ajax請求及處理過程詳解

    Java后臺判斷ajax請求及處理過程詳解

    這篇文章主要介紹了Java后臺判斷ajax請求及處理過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • mybatis-plugin插件執(zhí)行原理解析

    mybatis-plugin插件執(zhí)行原理解析

    這篇文章主要介紹了mybatis-plugin插件執(zhí)行原理,我們就需要來研究下Executor,ParameterHandler,ResultSetHandler,StatementHandler這4個對象的具體跟sql相關的方法,然后再進行修改,就可以直接起到aop的作用,需要的朋友可以參考下
    2022-10-10
  • JAVA 格式化JSON數據并保存到json文件中的實例

    JAVA 格式化JSON數據并保存到json文件中的實例

    這篇文章主要介紹了JAVA 格式化JSON數據并保存到json文件中的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • 基于Java實現經典蜘蛛紙牌游戲

    基于Java實現經典蜘蛛紙牌游戲

    《蜘蛛紙牌》(Ancient?Spider)?是由Oberon?Games開發(fā)的一款休閑益智類游戲。本文將利用Java語言實現這一經典游戲,需要的可以參考一下
    2022-05-05
  • Java面試題沖刺第十七天--基礎篇3

    Java面試題沖刺第十七天--基礎篇3

    這篇文章主要為大家分享了最有價值的三道java基礎面試題,涵蓋內容全面,包括數據結構和算法相關的題目、經典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Java easyui樹形表格TreeGrid的實現代碼

    Java easyui樹形表格TreeGrid的實現代碼

    這篇文章主要為大家詳細介紹了Java easyui樹形表格TreeGrid的實現代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03

最新評論