java怎么用代理模式实现多窗口运行

java怎么用代理模式实现多窗口运行,第1张

本文做喊晌实例形式详述了java实现一个程序运行时的启动窗口效果,如常用的microsoft word、 borland jbuilder 等,这样的窗口称为信息窗口。使用信息窗口的好处是可以使用户在等待软件主界面出现前的一段时间中得知软件运行状态。本例将演示如何来实现信息窗口,当打开程序时,信息窗口先显示,并在窗口上倒计时,直到“waiting 0”时,关闭该窗口,显示程序的主窗口。

该功能的主要实现方法如下:

一般来说,大多数的信息窗口是没有标题栏的,因此信息窗口不能由继承jframe 类来实现,一种简单的做法是通过继承jwindow 来实现(当然继承window 类也可以,但一个原则是尽量使用swing 中的界纯锋面

类)。另外,本例用到java.awt 包中的mediatracker 类。使用该类的好处是可以更好地管理程序中要使用的图片,同时还可以保证图片和界面同时显示,避免了窗口显示后很久才显示图片的缺点。

具体 *** 作步骤如下:

1.新建一个project,取名为jspleshwindowdemo,其他设置按默认值。

2.新建一个application ,取名为jspleshwindowdemo,主窗口取名为mainframe,主窗口标题取名为jspleshwindowdemo。

3.先来编写信息窗口的代码。新建一个新类spleshwindow.java,继承java.swing.jwindow类。在spleshwindow 类中,定义新的属性,代码如下:

private string statusstr=null//信息窗口中要显示的信息

private image logoimg=null//信息窗口中的显示图片

4.向构造方法中渗羡添加代码,加载图片并初始化窗体,实现代码如下:

public spleshwindow(jframe owner) { //以jframe 对象为参数,可以是信息窗口和主窗口交互

super( owner )

// 加载图片

logoimg=gettoolkit().getimage( classloader.getsystemresource("images/splesh.jpg") )

// 等待图片加载完成

java.awt.mediatracker tracker=new java.awt.mediatracker( this )//创建一个mediatracker 对象

tracker.addimage( logoimg , 0 )//将图片放入mediatracker 对象中,序号为0

try{ //等待直到图片加载完成

tracker.waitforall()

}catch ( interruptedexception e ) {

e.printstacktrace()

}

// 设置信息窗体在屏幕上的显示位置

setlocation( gettoolkit().getscreensize().width/2 - logoimg.getwidth(this)/2 , gettoolkit().getscreensize().height/2 -

logoimg.getheight(this)/2 )

setsize( logoimg.getwidth(this) , logoimg.getheight(this) )// 设置窗口大小

}

5.编写设置显示信息的方法,代码如下:

public void setstatus( string status ){

statusstr=status

paint( getgraphics() )// 重画窗口来更新信息窗口中的显示信息

}

6.重置paint()方法来绘制图片和显示信息的方法,代码如下:

public void paint(graphics g) {

/**@todo override this java.awt.component method*/

super.paint(g)

//绘制图片

if ( logoimg!=null )

这是我以前的课程设计,我把代码摘录一部分出来,希望对你有帮助!

/**

*MyFrame.java

*author:the fourth group

*version: 2007/1/27

*说明:该程序负责系统登陆框的哪者设置和实

*该应用程差轮序为首先显示的程序

*/

package com.java

import java.awt.Container

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import java.awt.event.ItemEvent

import java.awt.event.ItemListener

import javax.swing.ButtonGroup

import javax.swing.ImageIcon

import javax.swing.JButton

import javax.swing.JFrame

import javax.swing.JLabel

import javax.swing.JOptionPane

import javax.swing.JPasswordField

import javax.swing.JRadioButton

import javax.swing.JTextField

//import java.util.*

public class MyFrame implements ActionListener ,ItemListener{

//登陆界面属性

String userName

Container con

JLabel lab1,lab2,lab3,lab4

JTextField tf1

JPasswordField tf2

JRadioButton cb1,cb2,cb3

JButton bu1,bu2,bu3

JFrame fr1

public MyFrame(){

fr1=new JFrame()

con=fr1.getContentPane()

con.setLayout(null)

JLabel lab1=new JLabel("账号")

lab1.setBounds(20,70,50,20)

con.add(lab1)

lab2=new JLabel("密码")

lab2.setBounds(20,100,50,20)

con.add(lab2)

tf1=new JTextField()

tf1.setBounds(80,70,160,20)

con.add(tf1)

tf2=new JPasswordField()

tf2.setEchoChar('●')

tf2.setBounds(80,100,160,20)

con.add(tf2)

ButtonGroup cg1=new ButtonGroup()

cb1=new JRadioButton("普通虚缓信会员")

cb1.setBounds(15,135,80,20)

cb1.addItemListener(this) //普通会员

con.add(cb1)

cb2=new JRadioButton("图书管理员")

cb2.setBounds(90,135,102,20)

cb2.addItemListener(this)

con.add(cb2)

cb3=new JRadioButton("系统管理员")

cb3.setBounds(190,135,120,20)

cb3.addItemListener(this)

con.add(cb3)

cg1.add(cb1)

cg1.add(cb2)

cg1.add(cb3)

bu1=new JButton("登陆")

bu1.addActionListener(this)

bu1.setBounds(10,170,60,20)

con.add(bu1)

bu2=new JButton("取消")

bu2.setBounds(110,170,60,20)

con.add(bu2)

// bu1.addActionListener(new ActionListener(){

// public void actionPerformed(ActionEvent e){

////tf1.setText("")

////tf2.setText("")

////itemStateChanged()

// }

// })

bu2.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

tf1.setText("")

tf2.setText("")

//new Operator().showframe()

}

})

bu3=new JButton("注册")

bu3.setBounds(210,170,60,20)

// con.add(bu3)

bu3.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

// Face2()

}

})

lab3=new JLabel(new ImageIcon("2.jpg"))

lab3.setBounds(0,0,300,60)

con.add(lab3)

lab4=new JLabel(new ImageIcon("1.jpg"))

lab4.setBounds(0,0,300,230)

con.add(lab4)

fr1.setBounds(305,100,300,230)

fr1.setTitle("图书管理系统java版")

fr1.setResizable(false)

fr1.setVisible(true)

}

public void itemStateChanged(ItemEvent e){

//if(cb1.isSelected()){

//// p.showframe()

// try{

//// p.menu0.setEnabled(false)

////

//// p.menuItem6.setEnabled(false)

//// p.menuItem7.setEnabled(false)

//}catch(Exception d){}

//

//// p.menuItem3.setEnabled(false)

//// p.menuItem5.setEnabled(false)

//// p.menuItem6.setEnabled(false)

// }

// else if(cb2.isSelected()){

//// p.showframe()

//try{

//p.menu2.setEnabled(false)

// }catch(Exception d){}

//}

// else if(cb3.isSelected()){

//// p.showframe()

// }

}

public void actionPerformed(ActionEvent e){

//Operator p=new Operator()

if(e.getSource()==bu2)

{

this.setEnable("else")

}

else if(e.getSource()==bu1)

{

char[] password=tf2.getPassword() //获得密码

String passwordSTR=new String(password)

if(tf1.getText().equals("wp")&tf2.getText().equals("456")&!cb1.isSelected()){

JOptionPane.showMessageDialog(null,"请检查你的权限 !")

}

if(tf1.getText().equals("wp")&tf2.getText().equals("456")&cb1.isSelected()){

JOptionPane.showMessageDialog(null,"恭喜你提交成功")

fr1.setVisible(false)

// Operator s= new Operator("设计")//普通用户

//s.ti()

}

if(tf1.getText().equals("wp")&tf2.getText().equals("123456")&cb1.isSelected()){

JOptionPane.showMessageDialog(null,"恭喜你提交成功")

fr1.setVisible(false)

// Operator s=new Operator("设计")//普通用户

//s.ti()

}

if(tf1.getText().equals("王琼琨")&tf2.getText().equals("123456")&cb1.isSelected()){

JOptionPane.showMessageDialog(null,"恭喜你提交成功")

fr1.setVisible(false)

//Operator s= new Operator("设计")//普通用户

//s.ti()//普通用户

}

if(tf1.getText().equals("陈银山")&tf2.getText().equals("123456")&cb3.isSelected()){

fr1.setVisible(false)

JOptionPane.showMessageDialog(null,"恭喜你提交成功")//高级管理员

//new Operator("设计")//普通用户

}

if(tf1.getText().equals("刘凡")&tf2.getText().equals("6598")&cb2.isSelected()){

JOptionPane.showMessageDialog(null,"恭喜你提交成功")//图书管路元

fr1.setVisible(false)

//Operator s= new Operator("设计")//图书挂历员 用户

//s.ti1()

}

if(tf1.getText().trim().equals(""))

{

JOptionPane.showMessageDialog(null,"用户名不能为空!")

return

}

if(passwordSTR.equals(""))

{

JOptionPane.showMessageDialog(null,"密码不能为空!")

return

}

else{

userName=tf1.getText().trim()

}

String strSQL

strSQL="select * from users where 用户名='"+

tf1.getText().trim()+"'and 密码='"+

passwordSTR+"'"

//rs=db.getResult(strSQL)

boolean isExist=false

try

{

//isExist=rs.first()

}

catch(Exception sqle)

{

System.out.println(sqle.toString())

}

if(!isExist)

{

JOptionPane.showMessageDialog(null,"用户名不存在或者密码不正确!")

System.out.print("连接失败")

// this.setEnable("else")

}

else

{

//try

//{

////rs.first()

////this.setEnable(rs.getString("权限").trim())//设置权限

//// db.closeConnection()//DataBase

//}

//catch(SQLException sqle2)

//{

//System.out.println(sqle2.toString())

//}

}

}

}

/**

* 设置登录用户的权限

*

*/

public void setEnable(String powerType)

{

/**

* 根据不同用户设置相应权限

*/

//Operator p=new Operator()

if(powerType.trim().equals("系统管理员"))

{

System.out.println ("系统管理员")

//p.showframe()

}

else if(powerType.trim().equals("书籍管理员"))

{

System.out.println ("书籍管理员")

//p.showframe()

//p.menuItem6.setEnabled(false)

}

else if(powerType.trim().equals("else"))

{

System.out.println ("其他")

//p.showframe()

//p.menu0.setEnabled(false)

//p.menu2.setEnabled(false)

}

}

/**

* 登陆

*/

public static void main(String args []){

new MyFrame()

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12424453.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存