java多功能选择器
更新时间:2024-05-03 13:27:01 阅读量: 综合文库 文档下载
一、题目描述 .................................................................................. 2 二、设计思路 .................................................................................. 2 三、运行结果 .................................................................................. 7 四、源代码 .................................................................................... 10 五、总结 ........................................................................................ 28 六、参考文献 ................................................................................ 28
java多功能选择器
一、题目描述
java多功能选择器是有登陆界面和选择界面两大部分组成的。登陆界面,用户需要填写用户名并输入密码,两者均正确之后,才能进入选择界面。另外登陆界面还设置了帮助,为用户提供用户名和密码。选择界面,用户可以选择不同的按钮以实现不同的功能,如显示时间,会弹出一个时钟的界面并带有时间。其余按钮功能都相似,都可以实现不同的功能。
二、设计思路 1 类图:
2 说明:
表1.1 java源文件及其功能
序号 文件名 主要功能 备注 1 TestPasswordFiled 2 ChoseFrame 3 ClockAnimation 4 AnimationDemo 5 KeyListenerDemo 本程序的主类,登陆界面 实现系统的进入 选择界面类 实现不同功能的选择 时钟类 显示动态时钟窗口 升旗类 显示升旗窗口 图片移动类 显示图片移动窗口 该系统的主界面—系统登录界面是由TestPasswordFiled类控制的,该类继承与JFrame类,主要添加了三个按钮和两个文本框,文本框用于输入用户名和密码,三个按钮分别为登录,帮助,退出按钮。并且为每一个按钮添加了监听函数。当输入用户名和密码之后,点击登录按钮,如果用户名和密码正确,就会进入系统进入选择界面,不正确的话,会提示你输入不正确。点击帮助按钮会提示你系统的一组用户名和密码,帮助你进入系统。点击退出按钮,即退出程序。并且还为该界面添加了一张背景图片。
选择界面是由ChoseFrame类控制。主要功能就是选择不同的按钮进入不同的java程序。该类也主要是添加了几个按钮,并为按钮添加了消息监听函数,用于点击按钮实现不同的功能。点击显示时钟按钮,会调用StilllClock函数,显示一个动态JAVA小时钟。点击系统简介按钮,会显示该系统的主要功能和说明。点击“图片移动”按钮,会调用KeyListenerDemo类,显示一个窗口。点击“升旗仪式”按钮,会、调用Animation类,显示一个升国旗窗口。另外也为该类添加了一张图片。
时钟类StilllClock,主要实现的是显示一个动态时钟并且显示数字时间与当前的时间一至。本类还涉及圆形时钟的建立,需要在面板上调用函数画出一个圆并且将它均分为十二份,并添上数字。还需要一个显示数字时间的函数,显示数字时间。
升旗界面是由AnimationDemo控制,该类继承与JFrame,主要调用了一些函数,设置了两张图片,并能过随着时间的推移进行上下移动。还显示了一些描述性的文字,也能随着时间上下移动。
图片移动界面是由KeyListenerDemo类控制,主要是调用图片函数添加了四张图片,为上下左右键添加了键盘触发函数,点击键盘会选择不同的的图片并进行以移动。
系统简介界面主要是调用JOptionPane函数显示系统简介。
三、运行结果
登录界面:
选择界面:
时钟窗口:
图片移动窗口:
升旗仪式界面:
四、源代码
// TestPasswordField类 import java.awt.event.*; import java.awt.*; import javax.swing.*;
public class TestPasswordField extends JFrame{
private String[] nameString; private String[] passwordString; private JTextField inputName;
private JPasswordField passwordField;
private ChoseFrame chose=new ChoseFrame();
private JFrame hist=new JFrame();
public static void main(String[] args){
TestPasswordField frame = new TestPasswordField(); frame.setTitle(\系统登录窗体\ frame.setLocationRelativeTo(null); frame.setSize(350,250);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); }
public TestPasswordField(){ setLayout(null);
nameString = createNameString();
passwordString = createPasswordString(); JLabel name = new JLabel(\用户名:\ name.setBounds(20,60,80,40); inputName = new JTextField(10); inputName.setBounds(110,60,140,30);
inputName.setToolTipText(\名字不能超过10个字符!\ JLabel password = new JLabel(\密码:\ password.setBounds(20,110,100,30);
passwordField = new JPasswordField(8); passwordField.setEchoChar('*');
passwordField.setBounds(110,110,140,30);
passwordField.setToolTipText(\密码不能超过8个字符,且必须为数字!\
ImageIcon imageIcon =new ImageIcon(\
Image image=imageIcon.getImage(); JButton pa=new JButton(\ JButton login = new JButton(\登录\ JButton hellp= new JButton(\帮助\ JButton exit = new JButton(\退出\ pa.setBounds(0,0,340,50);
login.setBounds(15,170,100,35); hellp.setBounds(115,170,100,35); exit.setBounds(215,170,100,35); add(pa); add(name);
add(inputName); add(password);
add(passwordField); add(login); add(hellp); add(exit);
login.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ int index=0;
String text = inputName.getText(); String word = new String(passwordField.getPassword());
for(int i = 0;i < nameString.length;i++) if(text.equals(nameString[i]) ){ index = i; break; }
if(word.equals(passwordString[index])){
JOptionPane.showMessageDialog(null,\恭喜!登录成功!\
hist.setVisible(true); }
else
JOptionPane.showMessageDialog(null,\对不起,您输入的密码和姓名不匹配,请重新输入!\ } });
hellp.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){
JOptionPane.showMessageDialog(null,\用户名:huguanglin,密码:19891210\ } });
exit.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ System.exit(0); } });
inputName.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ String text = inputName.getText(); Boolean bool=false;
for(int i = 0;i < nameString.length;i++ ) if(text.equals(nameString[i])) bool = true; if(bool)
JOptionPane.showMessageDialog(null,\输入合理,请继续!\ else
JOptionPane.showMessageDialog(null,\输入不合理,请重新输入!\ } });
hist.add(chose); hist.pack();
hist.setTitle(\多功能选择系统\
}
public String[] createNameString(){ String[] name = {\ \ return name; }
public String[] createPasswordString(){ String[] password = {\
\;
return password; } }
// ChoseFrame类
import java.awt.event.*; import java.awt.*; import javax.swing.*;
public class ChoseFrame extends JPanel{
private ClockAnimation still=new ClockAnimation(); // private KeyListenerDemo key=new KeyListenerDemo(); private JFrame jat=new JFrame();
private JFrame histmoon1=new JFrame(); public ChoseFrame(){ setLayout(null);
setBounds(50,50,300,300);
ImageIcon imageIcon =new ImageIcon(\ Image image=imageIcon.getImage(); JButton pa=new JButton(\ JButton login = new JButton(\显示时钟\ JButton move=new JButton(\升旗仪式\ JButton hellp=new JButton(\图片移动\
JButton explain=new JButton(\系统简介\ JButton exit = new JButton(\退出\ pa.setBounds(0,0,300,100);
login.setBounds(50,120,100,35); hellp.setBounds(50,170,100,35); explain.setBounds(150,120,100,35); move.setBounds(150,170,100,35); exit.setBounds(110,240,100,35); add(pa); add(login); add(hellp); add(move); add(explain); add(exit);
histmoon1.add(still); histmoon1.pack();
histmoon1.setTitle(\多功能选择系统\
explain.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){
String string=\VA多功能选择器\\n\一个登陆界面\一个选择界面,可以选择不同的java程序!\
JOptionPane.showMessageDialog(null,string); } });
login.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){
JOptionPane.showMessageDialog(null,\欢迎使用显示时钟!\
histmoon1.setVisible(true); } });
hellp.addActionListener(new ActionListener(){
for(int i=0;i<60;i++) { int
xStart=(int)(xCenter+0.95*clockRadius*Math.sin(Math.PI/30*i)); int
yStart=(int)(yCenter-0.95*clockRadius*Math.cos(Math.PI/30*i)); int
xEnd=(int)(xCenter+clockRadius*Math.sin(Math.PI/30*i)); int
yEnd=(int)(yCenter-clockRadius*Math.cos(Math.PI/30*i));
g.setColor(Color.black);
g.drawLine(xStart,yStart,xEnd,yEnd); }
int sLength=(int)(clockRadius*0.8); int
xSecond=(int)(xCenter+sLength*Math.sin(second*(2*Math.PI/60)));
int
ySecond=(int)(yCenter-sLength*Math.cos(second*(2*Math.PI/60)));
g.setColor(Color.red);
g.drawLine(xCenter,yCenter,xSecond,ySecond); int mLength = (int)(clockRadius * 0.60);
int xMinute = (int)(xCenter + mLength *Math.sin(minute * (2 * Math.PI / 60)));
int yMinute = (int)(yCenter - mLength *Math.cos(minute * (2 * Math.PI / 60)));
g.setColor(Color.blue);
g.drawLine(xCenter, yCenter, xMinute, yMinute); int hLength = (int)(clockRadius * 0.45);
int xHour = (int)(xCenter + hLength *Math.sin((hour % 12 + minute / 60.0) * (2 * Math.PI / 12)));
int yHour = (int)(yCenter - hLength *Math.cos((hour % 12 + minute / 60.0) * (2 * Math.PI / 12)));
g.setColor(Color.green);
g.drawLine(xCenter, yCenter, xHour, yHour); g.setColor(Color.blue);
g.setFont(new Font(\ g.drawString(hour+\,getHeight()-10); }
public void setCurrentTime() {
Calendar calendar=new GregorianCalendar();
this.hour=calendar.get(Calendar.HOUR_OF_DAY); this.minute=calendar.get(Calendar.MINUTE); this.second=calendar.get(Calendar.SECOND); }
public Dimension getPreferredSize() {
return new Dimension(300,300); } }
//KeyListenerDemo类 import java.awt.*;
import java.awt.event.*; import javax.swing.*;
public class KeyListenerDemo extends JFrame implements KeyListener {
Image playerImage[]=new Image[4]; Image player; Toolkit tool;
int x=200,y=200;
public KeyListenerDemo() {
super(\ tool=getToolkit();
playerImage[0]=tool.getImage(\ playerImage[1]=tool.getImage(\ playerImage[2]=tool.getImage(\ playerImage[3]=tool.getImage(\ player=playerImage[0]; addKeyListener(this); this.setSize(600,600); this.setVisible(true); }
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.WHITE); g.fillRect(0,0,650,650);
g.drawImage(player,x,y,150,150,this); }
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_UP: player=playerImage[0]; if(y-32<0) break; else y-=10; repaint(); break;
case KeyEvent.VK_DOWN: player=playerImage[1]; if(y+48>400) break; else y+=10; repaint(); break;
case KeyEvent.VK_LEFT:
player=playerImage[2]; if(x-2<0) break; else x-=10; repaint(); break;
case KeyEvent.VK_RIGHT: player=playerImage[3]; if(x+48>400) break; else x+=10; repaint();
break; } }
public void keyTyped(KeyEvent e){} ; public void keyReleased(KeyEvent e){}; }
// AnimationDemo类 import javax.swing.*; import java.awt.event.*; import java.awt.*;
public class AnimationDemo extends JFrame { public AnimationDemo(){
ImageIcon imageIcon =new ImageIcon(\国旗.jpg\ Image image =imageIcon.getImage(); add(new MovingImagePanel(image)); }
static class MovingImagePanel extends JPanel{ ImageIcon imageIcon =new ImageIcon(); Image image =imageIcon.getImage(); private int xCoordinate=0; private int yCoordinate=500;
public MovingImagePanel(Image image){
this.image=image; }
public void paintComponent(Graphics g){ super.paintComponent(g);
ImageIcon imageIcon =new ImageIcon(\罪人.gif\ Image image2 =imageIcon.getImage();
g.drawImage(image2,xCoordinate+380,600-yCoordinate,200,160,this);
g.setColor(Color.GREEN);
g.setFont(new Font(\华文行楷\ g.drawString(\打倒小日本\ if(image!=null) {
if(yCoordinate<-150){ yCoordinate=610; }
yCoordinate-=1;
g.drawImage(image,xCoordinate,yCoordinate,210,180,this); if(yCoordinate<580&&yCoordinate>500) {
g.setColor(Color.RED); g.setFont(new Font(\方正舒体\
g.drawString(\中国万岁\ }
if(yCoordinate<430&&yCoordinate>340) {
g.setColor(Color.BLUE); g.setFont(new Font(\华文彩云\
g.drawString(\中国万岁\
}
if(yCoordinate<300&&yCoordinate>220) {
g.setColor(Color.MAGENTA); g.setFont(new Font(\方正舒\
g.drawString(\中国万\ }
if(yCoordinate<200&&yCoordinate>100) {
g.setColor(Color.DARK_GRAY); g.setFont(new Font(\方正舒\
g.drawString(\中国万\ }
if(yCoordinate<95&&yCoordinate>-150) {
g.setColor(Color.RED); g.setFont(new Font(\华文行\
g.drawString(\中国万\ }
g.setColor(Color.MAGENTA); g.setFont(new Font(\楷_GB2312\ g.drawString(\义勇军进行\
g.setColor(Color.MAGENTA); g.setFont(new Font(\楷
体岁
体岁
楷岁
体曲
体
_GB2312\
g.drawString(\田汉 作词 聂耳 作曲\ g.setFont(new Font(\楷体_GB2312\ g.drawString(\起来!\
g.drawString(\不愿做奴隶的人们!\
g.drawString(\把我们的血肉,筑成我们新的长城!\
g.drawString(\中华民族到了,最危险的时候,\
g.drawString(\每个人被迫着,发出最后的吼声!\
g.drawString(\起来!起来!起来! \
g.drawString(\我们万众一心,冒着敌人的炮火\ g.drawString(\前进, \
g.drawString(\冒着敌人的炮火\ g.drawString(\前进,前进,\ g.drawString(\前进,进 \
} } } }
五、总结
1本程序主要实现了不同界面之间的调用,有登陆界面,选择界面,还有几个java小程序组成。整体的功能还算可以,输入用户名和密码能够实现系统的登陆,进入选择界面之后可以选择不同的功能按键实现不同的功能。本来还在登陆界面设计了申请账号的功能,但是编写程序的过程中遇到一点问题,没有处理好数据的存储与交换,不能进行用户名的添加,所以就没有实现这一功能。
2 在写程序的过程中进一步对JAVA中的内部类有了更多的了解,学会了使用不同的内部函数。JAVA中的很多内部类功能都很全面,使用它们可以降低了编程的难度,为我们学习Java编程提供了很大的方便。同时也学会了很多编程的方法和技巧。总的来说,这次课程设计自己还是学会了很多东西的。
六、参考文献
[1]. 万波 郑海红 译著 JAVA语言程序设计基础篇.机械工业出版社. [2]. 叶核亚 编著 JAVA2程序设计 实用教程..电子工业出版社.
正在阅读:
java多功能选择器05-03
工业锅炉热力计算09-07
1959年中医资料10 对针刺操作手法的研究和心得04-25
加强生态文明建设 促进林业可持续发展04-23
C语言实验报告(三)10-27
公司员工规章制度12-12
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 多功能
- 选择
- java
- 2018春部编人教版八年级语文下册第10课《小石潭记》教学设计8
- matlab仿真实验指导书
- 浙江省台州中学10-11学年高一上学期期中考试(政治)A卷
- 产业园规划
- 示波器的初级使用方法教程 - 图文
- 焦化试题
- 公共关系
- 失业保险历年考题2007年11月
- 人教版小学三年级下册语文期末试卷(6)(2)
- 西门子S7-200 PLC高速脉冲输出向导使用方法
- 10第十章 文件习题
- 管理会计模拟实验报告全面预算
- 浙大远程2017人力资源管理在线作业
- 2019届高考文科数学第一轮开卷速查检测题22
- 荷花金池五层整体包装方案
- 2013年暑假实践报告
- 二模阅读提优 - 图文
- 数据结构期末复习十套习题(附答案)
- 12010综采工作面回撤作业规程2013.10.25
- 已就业学生档案存放的方式