swing右击d出菜单

swing右击d出菜单,第1张

/**

*这个小程序没试运行过,现写的.如果不能运行自己找找原因,可能是代码的英文打错了.

*效果 点击界面中的""右键点我""标签 则d出一个窗口.d出来的窗口出现的坐标可以默认.

*可以自己定, 也可以通过鼠标事件返回鼠标坐标,出现在鼠标旁边.

*我这里只是默认...主要是演示鼠标右键的触发事件.

*/

public class Test extends JFrame implments MouseListener{

JLabel jl

Chke c

//主函数

pulblic static void main(String args){

Test t=new Test()

}

public Test(){

jl=new JLabel("右键点我")

jl.addMouseListener(this)

this.add(jl)

this.setSize(大小自己定两个数字)

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)//关闭窗口同时结束进程.

this.setVisible(true)

}

@Override

public void mousePressed(MouseEvent e) {

// TODO Auto-generated method stub

System.out.print("鼠标按键被按下,")

int i = e.getButton()

if (i == MouseEvent.BUTTON1) {

System.out.println("按下的是鼠标左键")

//按下左键就关闭d出来的窗口,先要判断c是否已经创建了.

if(c!=null){

c.Close()

}

}

if (i == MouseEvent.BUTTON2)

System.out.println("按下的是鼠标中键")

if (i == MouseEvent.BUTTON3 && e.getSource==jl ) {

/**如果有 && e.getSource==jl 则只是在jl这个标签上点击鼠标右键才触发事件,

*如果没有&& e.getSource==jl 则在界面的任何地方都有右键触发事件.

*/

System.out.println("按下的是鼠标右键")

//创建一个新窗口.

c=new Chke()

}

}

@.............后面还有三个继承的鼠标事件函数,依次应该是,2松开鼠标,3,鼠标进入界面,

4鼠标离开界面.

}

//这个类,可以继承DaLog 也可是JPane JFrame

class Chke extends JPane{

//构造函数

public Chke (){

this.setSize(100,85)

this.setVisible(true)

}

//关闭本窗口函数.

public static void Close(){

this.dispose()

}

}

java 可以实现将程序最小化到托盘的吧.....

甚至还可以设定最小化到托盘的图标,这样的话,当有新消息到达时,你可以把它的图标设置成无色的另一图片(或者只将其最小化,而不设置其图标),然后再设置成原来的图片,如此反复,就实现了闪烁的功能.........

不过似乎先要判断当前 *** 作系统是否支持系统托盘..........下面这个程序实现了系统托盘,但是似乎在我的电脑上没实现出来,难道 *** 作系统不支持?

import java.awt.*

import java.awt.event.*

import javax.swing.*

public class SystemTrayTest extends JFrame implements ActionListener

{

//创建菜单、菜单项数组、消息类型

PopupMenu popup=new PopupMenu()

Menu menu=new Menu("消息类型")

MenuItem[] itemArray ={new MenuItem("信息消息"),new MenuItem("常规消息"),

new MenuItem("警告消息"),new MenuItem("错误消息"),new MenuItem("退出程序")}

//定义系统托盘、托盘图标变量

SystemTray tray

TrayIcon trayIcon

//构造方法

public SystemTrayTest(){

//对菜单项添加监听并将菜单项添加到菜单中

for(int i=0i<itemArray.lengthi++){

if(i<4){

itemArray[i].addActionListener(this)//为菜单项注册监听器

//将菜单项数组中前3个菜单项添加进"d出消息"菜单中

menu.add(itemArray[i])

}

itemArray[4].addActionListener(this)//添加监听

popup.add(menu)//将d出消息菜单添加到菜单中

popup.add(itemArray[4])//将退出菜单添加到菜单中

}

// 判断当前 *** 作系统是否支持系统托盘

if (SystemTray.isSupported()) {

//获取系统托盘

tray = SystemTray.getSystemTray()

//加载图标

Image image = Toolkit.getDefaultToolkit().getImage("d:/trayIcon.jpg")

//创建托盘图标

trayIcon=new TrayIcon(image,"系统托盘测试",popup)

//托盘图标自动设置尺寸

trayIcon.setImageAutoSize(true)

try{//添加托盘图标到系统托盘中

tray.add(trayIcon)

}

catch(AWTException e){

e.printStackTrace()

}

//为托盘图标注册监听器

trayIcon.addActionListener(this)

}

//设置窗体关闭按扭所执行的动作

this.addWindowListener(

new WindowAdapter(){

public void windowClosing(WindowEvent e){

SystemTrayTest.this.hide()//隐藏窗体

}

})

//设置窗体属性

this.setTitle("系统托盘测试")

this.setBounds(200,200,150,100)

this.setVisible(true)

}

//重写actionPerformed方法

public void actionPerformed(ActionEvent e){

if(e.getSource()==itemArray[0])

{//点击信息消息菜单项执行的动作

trayIcon.displayMessage("信息","程序最小化,仍在运行",TrayIcon.MessageType.INFO)

}else if(e.getSource()==itemArray[1])

{//点击信息消息菜单项执行的动作

trayIcon.displayMessage("常规信息","现在一切正常",TrayIcon.MessageType.NONE)

}else if(e.getSource()==itemArray[2])

{//单击警告消息菜单项执行的动作

trayIcon.displayMessage("警告信息","有不明来源的攻击",TrayIcon.MessageType.WARNING)

}else if(e.getSource()==itemArray[3])

{//点击错误消息菜单项执行的动作

trayIcon.displayMessage("错误信息","程序发生严重错误",TrayIcon.MessageType.ERROR)

}else if(e.getSource()==itemArray[4])

{//点击退出程序菜单项执行的动作

System.exit(0)

}else if(e.getSource()==trayIcon)

{//双击托盘图标执行的代码

this.show(true)

}

}

//主方法

public static void main(String args[])

{//创建SystemTrayTest窗体对象

new SystemTrayTest()

}

}


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

原文地址: http://outofmemory.cn/yw/11405691.html

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

发表评论

登录后才能评论

评论列表(0条)

保存