今天带来的是用户界面,这个是我们小组的主要战斗力——马某同学写的,我觉得他写的特点就是风格统一,层次清晰。
首先是主界面,这个欢迎试用本系统是左右一直缓慢移动的,很不错
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class MainFrame {
GridBagLayout layout=new GridBagLayout();
GridBagConstraints gbc=new GridBagConstraints();
JMenuBar menubar1 = new JMenuBar();
JMenu menu1=new JMenu("票务管理");
JMenu menu2=new JMenu("会员管理");
JMenu menu5=new JMenu("信息服务");
JMenu menu6=new JMenu("用户设置");
JMenuItem menu1Item1=new JMenuItem("售票");
JMenuItem menu1Item2=new JMenuItem("退票");
JMenuItem menu2Item1=new JMenuItem("会员注册");
JMenuItem menu2Item2=new JMenuItem("信息管理");
JMenuItem menu5Item1=new JMenuItem("版本信息");
JMenuItem menu5Item2=new JMenuItem("使用帮助");
JMenuItem menu6Item1=new JMenuItem("修改密码");
JFrame jf=new JFrame("剧院票务管理系统");
static JPanel jp=new JPanel(new GridLayout(1,1));
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screeSize=kit.getScreenSize();
static JScrollPane js;
public MainFrame(){
menu1.add(menu1Item1);
menu1.add(menu1Item2);
menu2.add(menu2Item1);
menu2.add(menu2Item2);
menu5.add(menu5Item1);
menu5.add(menu5Item2);
menu6.add(menu6Item1);
menubar1.add(menu1);
menubar1.add(menu2);
menubar1.add(menu5);
menubar1.add(menu6);
jf.setJMenuBar(menubar1);
jp.add(new BackGround());
jf.add(jp);
jf.setSize(screeSize.width, screeSize.height);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
menu1Item1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
jp.removeAll();
jp.updateUI();
js=new JScrollPane(new Sell());
jp.add(js);
}
});
menu1Item2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
jp.removeAll();
jp.updateUI();
js=new JScrollPane(new Return());
jp.add(js);
}
});
menu2Item1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
jp.removeAll();
jp.updateUI();
jp.add(new MemberRegister());
}
});
menu2Item2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
jp.removeAll();
jp.updateUI();
jp.add(new InforManage());
}
});
menu5Item1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
jp.removeAll();
jp.updateUI();
jp.add(new Infor());
}
});
menu5Item2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
jp.removeAll();
jp.updateUI();
jp.add(new Help());
}
});
menu6Item1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
jp.removeAll();
jp.updateUI();
jp.add(new ChangeTW());
}
});
}
}
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.ImageObserver;
import javax.print.DocFlavor.URL;
import javax.swing.*;
import 剧院管理界面.MainFrame;
public class BackGround extends JPanel{
String text="欢迎使用本系统";
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screeSize=kit.getScreenSize();
int x=0;
public BackGround(){
Timer time=new Timer(500,new ActionListener(){
public void actionPerformed(ActionEvent e) {
repaint();
}
});
time.start();
}
protected void paintComponent(Graphics g){
int a=MainFrame.jp.getHeight();
int y=a/2;
ImageIcon icon=new ImageIcon("F:/人机界面第一次设计/成果/Picture/背景.jpg");
super.paintComponent(g);
g.setColor(Color.RED);
g.setFont(new Font("宋体",Font.BOLD,40));
ImageObserver ll = null;
g.drawImage(icon.getImage(),0,0,MainFrame.jp.getWidth(),MainFrame.jp.getHeight(),ll);
g.drawString(text, x, y);
if(x>=MainFrame.jp.getWidth()){
x=0;
}
x+=5;
}
}
然后呢,每个功能键都是
点击上去基本都是如此,执行每个功能后都出现相应的界面,这里先举:
package 剧院管理界面;
import java.awt.*;
import java.awt.image.ImageObserver;
import java.net.URL;
import javax.swing.*;
import javax.swing.border.EtchedBorder;
public class MemberRegister extends JPanel{
String[] memberType=new String[]{"普通会员","黄金会员","钻石会员"};
JLabel jl1=new JLabel("用户姓名:");
JLabel jl2=new JLabel("用户账号:");
JLabel jl3=new JLabel("用户类型:");
JLabel jl4=new JLabel("用户余额:");
JTextField jt1=new JTextField(10);
JTextField jt2=new JTextField(10);
JTextField jt4=new JTextField(10);
JPanel jp1=new JPanel();
GridBagLayout layout=new GridBagLayout();
GridBagConstraints gbc=new GridBagConstraints();
JPanel jp2=new JPanel(new FlowLayout());
JPanel jpanel=new JPanel();
JButton button=new JButton("立即注册");
JComboBox box = new JComboBox();
public MemberRegister(){
jl1.setFont(new Font("宋体",Font.ITALIC,20));
jl2.setFont(new Font("宋体",Font.ITALIC,20));
jl3.setFont(new Font("宋体",Font.ITALIC,20));
jl4.setFont(new Font("宋体",Font.ITALIC,20));
jt1.setFont(new Font("宋体",Font.ITALIC,20));
jt2.setFont(new Font("宋体",Font.ITALIC,20));
jt4.setFont(new Font("宋体",Font.ITALIC,20));
box.setFont(new Font("宋体",Font.ITALIC,20));
button.setFont(new Font("宋体",Font.ITALIC,20));
//button.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
button.setBackground(Color.BLUE);
for(int i=0;i<memberType.length;i++)
box.addItem(memberType[i]);
jp1.setLayout(layout);
gbc.gridx=0;
gbc.gridy=0;
gbc.gridwidth=1;
gbc.gridheight=1;
jp1.add(jl1,gbc);
gbc.gridx=1;
gbc.gridy=0;
gbc.gridwidth=1;
gbc.gridheight=1;
jp1.add(jt1,gbc);
gbc.gridx=0;
gbc.gridy=1;
gbc.gridwidth=1;
gbc.gridheight=1;
jp1.add(jl2,gbc);
gbc.gridx=1;
gbc.gridy=1;
gbc.gridwidth=1;
gbc.gridheight=1;
jp1.add(jt2,gbc);
gbc.gridx=0;
gbc.gridy=2;
gbc.gridwidth=1;
gbc.gridheight=1;
jp1.add(jl3,gbc);
gbc.gridx=1;
gbc.gridy=2;
gbc.gridwidth=1;
gbc.gridheight=1;
jp1.add(box,gbc);
gbc.gridx=0;
gbc.gridy=3;
gbc.gridwidth=1;
gbc.gridheight=1;
jp1.add(jl4,gbc);
gbc.gridx=1;
gbc.gridy=3;
gbc.gridwidth=1;
gbc.gridheight=1;
jp1.add(jt4,gbc);
jp2.add(button);
jpanel.setLayout(layout);
gbc.gridx=0;
gbc.gridy=0;
gbc.gridwidth=1;
gbc.gridheight=1;
jpanel.add(jp1,gbc);
gbc.gridx=0;
gbc.gridy=1;
gbc.gridwidth=1;
gbc.gridheight=1;
jpanel.add(jp2,gbc);
jp1.setOpaque(false);
jp2.setOpaque(false);
jpanel.setOpaque(false);
setLayout(layout);
gbc.gridx=0;
gbc.gridy=0;
gbc.gridwidth=1;
gbc.gridheight=1;
add(jpanel,gbc);
}
protected void paintComponent(Graphics g){
ImageIcon icon=new ImageIcon("F:/人机界面第一次设计/成果/Picture/主背景.jpg");
super.paintComponent(g);
ImageObserver ll = null;
g.drawImage(icon.getImage(),0,0,MainFrame.jp.getWidth(),MainFrame.jp.getHeight(),ll);
}
}
这个就是点击会员管理里面的会员注册之后出现的。
那么重点就是接下来的购票
点击票务管理的售票,首先出来的是电影信息界面,点击购买进入选座位界面,在点击需要的座位后,图票由灰色变为绿色,最后点击立即购买计科
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.ImageObserver;
import java.net.URL;
import java.util.*;
import javax.swing.*;
import javax.swing.border.EtchedBorder;
import javax.swing.event.ListSelectionEvent;
public class Sell extends JPanel{
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screeSize=kit.getScreenSize();
GridBagLayout layout=new GridBagLayout();
GridBagConstraints gbc=new GridBagConstraints();
ImageIcon icon1=new ImageIcon("F:/人机界面第一次设计/成果/Picture/按钮.png");
String[] names={"今日上线","放映时间","放映大厅","电影售价","点击购票"};
String[][] infor={{"111","2016-4-3","8号厅","30"},
{"111","2016-4-3","8号厅","30"},
{"111","2016-4-3","8号厅","30"},
{"111","2016-4-3","8号厅","30"},
{"111","2016-4-3","8号厅","30"},
{"111","2016-4-3","8号厅","30"},
{"111","2016-4-3","8号厅","30"},
{"111","2016-4-3","8号厅","30"},
{"111","2016-4-3","8号厅","30"},
{"111","2016-4-3","8号厅","30"},
{"111","2016-4-3","8号厅","30"},
{"111","2016-4-3","8号厅","30"},
{"111","2016-4-3","8号厅","30"},
{"111","2016-4-3","8号厅","30"},
{"111","2016-4-3","8号厅","30"},
{"111","2016-4-3","8号厅","30"},
{"111","2016-4-3","8号厅","30"},
{"111","2016-4-3","8号厅","30"},
{"111","2016-4-3","8号厅","30"},
{"111","2016-4-3","8号厅","30"},
{"111","2016-4-3","8号厅","30"}
};
JLabel[] jl=new JLabel[names.length];
JButton[] jb=new JButton[infor.length];
JTextField[][] jt=new JTextField[infor.length][infor[0].length];
public Sell() {
int i=0,j=0;
int m=0,n=0;
setLayout(layout);
for(i=0;i<names.length;i++)
{
gbc.gridx=m;
gbc.gridy=n;
gbc.gridwidth=1;
gbc.gridheight=1;
jl[i]=new JLabel(names[i]);
jl[i].setOpaque(false);
add(jl[i],gbc);
m++;
}
for(i=0;i<infor.length;i++)
{
for(j=0;j<infor[0].length;j++)
{
jt[i][j]=new JTextField(10);
jt[i][j].setText(infor[i][j]);
jt[i][j].setEditable(false);
jt[i][j].setOpaque(false);
gbc.gridx=j;
gbc.gridy=i+1;
gbc.gridwidth=1;
gbc.gridheight=1;
add(jt[i][j], gbc);
}
}
for(i=0;i<infor.length;i++)
{
gbc.gridx=m-1;
gbc.gridy=i+1;
gbc.gridwidth=1;
gbc.gridheight=1;
jb[i]=new JButton("购买");
jb[i].setIcon(icon1);
jb[i].setHorizontalTextPosition(JButton.CENTER);
jb[i].setMargin(new Insets(0,0,0,0));
jb[i].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
MainFrame.jp.removeAll();
MainFrame.jp.updateUI();
JScrollPane js=new JScrollPane(new OnlineSeat());
MainFrame.jp.add(js);
}
});
jb[i].setOpaque(false);
add(jb[i], gbc);
}
}
protected void paintComponent(Graphics g){
int x=screeSize.width;
int y=screeSize.height;
ImageIcon icon=new ImageIcon("F:/人机界面第一次设计/成果/Picture/主背景.jpg");
super.paintComponent(g);
g.drawImage(icon.getImage(),0,0,x,y,this);
}
}
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.Toolkit;
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.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.border.EtchedBorder;
public class OnlineSeat extends JPanel{
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screeSize=kit.getScreenSize();
static GridBagLayout layout=new GridBagLayout();
static GridBagConstraints gbc=new GridBagConstraints();
JButton[][] jb=new JButton[10][10];
JLabel[] jl=new JLabel[jb.length];
ImageIcon icon1=new ImageIcon("F:/人机界面第一次设计/成果/Picture/座位.png");
ImageIcon icon2=new ImageIcon("F:/人机界面第一次设计/成果/Picture/座位1.png");
ImageIcon icon3=new ImageIcon("F:/人机界面第一次设计/成果/Picture/立即购买.png");
int i,j;
JButton buy=new JButton("立即购买");
public OnlineSeat(){
buy.setIcon(icon3);
buy.setHorizontalTextPosition(JButton.LEFT);
buy.setBorderPainted(false);
buy.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
MainFrame.jp.removeAll();
MainFrame.jp.updateUI();
MainFrame.jp.add(new SellInfor());
}
});
setLayout(layout);
JLabel jlabel=new JLabel("屏幕中央",SwingConstants.CENTER);
jlabel.setFont(new Font("",Font.CENTER_BASELINE,30));
jlabel.setForeground(Color.gray);
for(i=0;i<jb.length;i++){
jl[i]=new JLabel("第"+(i+1)+"排");
gbc.gridx=0;
gbc.gridy=i+1;
gbc.gridwidth=1;
gbc.gridheight=1;
add(jl[i],gbc);
for(j=0;j<jb[0].length;j++){
jb[i][j]=new JButton();
jb[i][j].setIcon(icon1);
jb[i][j].setMargin(new Insets(0,0,0,0));
jb[i][j].setOpaque(false);
jb[i][j].setBorderPainted(false);
jb[i][j].addActionListener(new MyListener());
gbc.gridx=j+1;
gbc.gridy=i+1;
gbc.gridwidth=1;
gbc.gridheight=1;
add(jb[i][j],gbc);
}
gbc.gridx=(j+1)/2;
gbc.gridy=0;
gbc.gridwidth=1;
gbc.gridheight=1;
add(jlabel,gbc);
gbc.gridx=(j+1)/2;
gbc.gridy=i+2;
gbc.gridwidth=1;
gbc.gridheight=1;
add(buy,gbc);
}
}
class MyListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
JButton jb=(JButton) e.getSource();
if(jb.getIcon()==icon1)
jb.setIcon(icon2);
else
jb.setIcon(icon1);
}
}
protected void paintComponent(Graphics g){
int x=screeSize.width;
int y=screeSize.height;
ImageIcon icon=new ImageIcon("F:/人机界面第一次设计/成果/Picture/座位背景.jpg");
super.paintComponent(g);
g.drawImage(icon.getImage(),0,0,x,y,this);
}
}
因为有几个界面的模式是和管理员界面的是一样的,这里就不一一列举代码了。有时很多设计都是大同小异的,就是看创新在什么地方。