扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
1、如果你的是纯java的应用,那么可以通过给事件增加一个事件监听器的方式来加入相应的监听器
成都创新互联公司自2013年起,先为锡林浩特等服务建站,锡林浩特等地企业,进行企业商务咨询服务。为锡林浩特企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
2、如果你写的是Web应用的java程序,那么你可以去通过去实现一个servlet的监听器接口来实现自己的监听器,在写完自己的监听器之后,你还要把监听器配置到你的web.xml文件中,这事在服务器加载你的web应用项目的时候,就会自动的加载该监听器从而进行相应的初始化操作了。
代码如下
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class RegFrame extends JFrame {
JTextField jtf = new JTextField(12);
public RegFrame() {
JButton jb = new JButton("登录:输入admin");
this.add(jtf);
this.add(jb);
this.setLayout(new FlowLayout());
this.setBounds(300, 250, 300, 350);
this.setTitle("登录窗口");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
jb.addActionListener(new ChangeListener(this));
}
public static void main(String[] args) {
new RegFrame();
}
//内部类,负责窗口的跳转
class ChangeListener implements ActionListener{
JFrame jf;
public ChangeListener(JFrame jf) {
this.jf = jf;
}
@Override
public void actionPerformed(ActionEvent e) {
if(jtf.getText().equals("admin")){//如果输入admin就登录成功,然后跳转窗口
jf.dispose();//销毁登录窗口
new ContentFrame();//新建内容窗口
}else{
JOptionPane.showMessageDialog(jf, "登陆失败,密码是admin");
}
}
}
}
//内容窗口
class ContentFrame extends JFrame{
public ContentFrame(){
this.add(new JLabel("内容窗口...."));
this.setLayout(new FlowLayout());
this.setBounds(300, 250, 300, 350);
this.setTitle("内容窗口");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
}
操作系统,有两个层次,第一个层次是对组装起电脑的各个硬件的驱动程序;第二个是建立在驱动程序上的各项应用程序,比如桌面显示、键盘监听后的处理程序等等。如果想要进行监听键盘,那么就需要获取到所使用操作系统给出的api接口,以windows系统为例,是用c和c++进行编写的,所以他们提供的api都是c和c++的api接口。于是用java的话就需要用到java的native方法,一个Native Method就是一个java调用非java代码的接口。所以3个步骤:
1、引用java native方法。
2、研究windows api。
3、调用windows api中的键盘监听接口,完成程序。
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class TestRandom extends JFrame {
JTextField field;
JButton randomButton;
RandomNumber t = new RandomNumber();
public TestRandom() {
field = new JTextField(15);
randomButton = new JButton("产生随机数");
randomButton.addActionListener(new RandomListener());
this.getContentPane().setLayout(new FlowLayout());
this.getContentPane().add(field);
this.getContentPane().add(randomButton);
this.setSize(300,100);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
this.setVisible(true);
}
class RandomListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String actionCommand = randomButton.getText();
if(actionCommand.equals("产生随机数")) {
randomButton.setText("停止");
t.stop = false;
new Thread(t).start();
} else if(actionCommand.equals("停止")) {
randomButton.setText("产生随机数");
t.stop = true;
}
}
}
class RandomNumber implements Runnable {
Random random;
StringBuffer num;
boolean stop = false;
public RandomNumber() {
random = new Random();
num = new StringBuffer("");
}
public void run() {
while(!stop) {
num.setLength(0);
for(int i=0;i6;i++) {
num.append(random.nextInt(9));
}
field.setText(num.toString());
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
new TestRandom();
}
}
使用jpcap,java的截包工具。可以截取主机上某个端口的数据包。在主机上安装邮件服务器,然后监听截取25端口数据并解析,提取有用数据。
java 自定义监听器监听属性变化
import java.util.EventObject;
public class MyEvent extends EventObject
{
private Object obj;
private String sName;
public MyEvent(Object source,String sName)
{
super(source);
this.obj=source;
this.sName=sName;
}
public Object getObj()
{
return obj;
}
public String getsName()
{
return sName;
}
}
import java.util.EventListener;
public interface MyEventListener extends EventListener
{
public void handleEvent (MyEvent me);
}
import java.util.Iterator;
import java.util.Vector;
import demo.DemoEvent;
public class MyEventSource
{
private Vector list=new Vector();
private String sName = "";
public MyEventSource()
{
super();
}
public void addMyEventListener(MyEventListener me)
{
list.add(me);
}
public void deleteMyEventListener(MyEventListener me)
{
list.remove(me);
}
public void notifyMyEvent(MyEvent me)
{
Iterator it=list.iterator();
while(it.hasNext())
{
((MyEventListener) it.next()).handleEvent(me);
}
}
public void setName(String str)
{
boolean bool = false;
if (str == null sName != null)
bool = true;
else if (str != null sName == null)
bool = true;
else if (!sName.equals(str))
bool = true;
this.sName = str;
// 如果改变则执行事件
if (bool)
notifyMyEvent(new MyEvent(this, sName));
}
public String getsName()
{
return sName;
}
}
public class Test implements MyEventListener
{
public Test()
{
MyEventSource mes = new MyEventSource();
mes.addMyEventListener(this);
mes.setName("niu");
}
public static void main(String args[])
{
new Test();
}
public void handleEvent(MyEvent me)
{
System.out.println(me.getSource());
System.out.println(me.getsName());
}
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流