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程序设计 实用教程..电子工业出版社.

本文来源:https://www.bwwdw.com/article/idjg.html

Top