最好是给一段代码?谢谢

解决方案 »

  1.   

    查下
    windows  帮助吧!
      

  2.   

    项目中用到的一个类!package com.sysdynamic.slideshow;import com.sysdynamic.set.SlideShowSetting;import java.awt.*;
    import java.awt.BorderLayout;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;import java.util.List;import javax.swing.*;/**
     * 幻灯片的实现类
     *相册中的相片以幻灯片的形式查看
     * @author Andy Yang
     * @email [email protected]
     *
     */
    public class BasicSlideShow extends JFrame implements KeyListener, Runnable,
            IBasicSlideShow {    private static final long serialVersionUID = 1L;
        static ISlideShow slideShow;
        BorderLayout borderLayout1;
        List albumObjects;
        JLabel imageLabel;
        static Dimension screenSize;
        Thread threads;
        int falg = 0;
        BasicSlideShow bss;
        String sleepTime;
        SlideShowSetting slideShowSetting = new SlideShowSetting();    /**
         * 无参构造方法
         */
        public BasicSlideShow() {
            borderLayout1 = new BorderLayout();
            imageLabel = new JLabel();
            screenSize = getGraphicsConfiguration().getBounds().getSize();
            this.albumObjects = albumObjects;
            sleepTime = slideShowSetting.querySlideShowSetting();        try {
                jbInit();
            } catch (Exception ex) {
            }
        }    /**
         * 转换图片
         * @param icons 转换为下一张的图片
         */
        void showImage(Icon icons) {
            try {
                imageLabel.setIcon(icons);
            } catch (Exception ex) {
                ex.printStackTrace(System.err);
            }
        }    void jbInit() throws Exception {
            this.addKeyListener(this);
            setUndecorated(true);        Container c = getContentPane();
            imageLabel.setHorizontalAlignment(0);
            c.setBackground(Color.black);
            c.addMouseListener(new BasicSlideShow_c_mouseAdapter(this));
            c.setLayout(borderLayout1);
            setSize(screenSize);
            c.add(imageLabel, java.awt.BorderLayout.CENTER);
        }    public static void main(String[] args) {
        //  slideShow = new SlideShow("F:\\新建文件夹"
        //          ); // "C:\\Users\\Public\\Pictures\\Sample Pictures"
        //  BasicSlideShow bss = new BasicSlideShow();
        //  bss.showImage(slideShow.first());
        //  bss.setVisible(true);
        }    /**
         * 播放幻灯片
         * @param List imageList 图片集合
         */
        public void starts(List imageList) {
            slideShow = new SlideShow(imageList);
            bss = new BasicSlideShow();
            bss.showImage(slideShow.first());
            bss.setVisible(true);
        }    /**
         * 关闭
         */
        public int close() {
            int value = 0;        //  int value = JOptionPane.showOptionDialog(null, "From slides !",
            //        "Messages",
            //         0, 1, null, null, null);
            return value;
        }    public void keyPressed(KeyEvent e) {
            switch (e.getKeyCode()) {
                case 27: // '\033'                int j = 0;                if (threads != null) {
                        this.stop();
                        j = 1;
                    }                if (close() == 0) {
                        this.setVisible(false);
                        this.dispose();
                    } else {
                        if (j == 1) {
                            this.starts();
                        }
                    }                break;            case 10: // '\n'
                case 32: // ' '
                case 34: // '"'
                case 39: // '\''
                case 40: // '('
                    this.showImage(slideShow.forward()); //下一张                break;            case 8: // '\b'
                case 33: // '!'
                case 37: // '%'
                case 38: // '&'
                    this.showImage(slideShow.backward()); //上一张                break;            case 36: // '$'
                    this.showImage(slideShow.first()); //第一张                break;            case 35: // '#'
                    this.showImage(slideShow.last()); //最后一张                break;            case 122:                if ((falg % 2) == 0) {
                        this.starts();
                        falg++;
                    } else {
                        this.stop();
                        falg--;
                    }                break;
            }
        }    public void keyReleased(KeyEvent e) {
        }    public void keyTyped(KeyEvent e) {
        }    /**
         *  开始幻灯片播放
         */
        public void starts() {
            if (threads == null) {
                threads = new Thread(this);
                threads.start();
            }
        }    /**
         * 暂停幻灯播放
         */
        public void stop() {
            if (threads != null) {
                threads.stop();
            }        threads = null;
        }    /**
         *放映幻灯片
         */
        public void run() {
            while (threads != null) {
                this.showImage(slideShow.forward());            try {
                    threads.sleep(Integer.parseInt(sleepTime));
                } catch (InterruptedException ex) {
                    threads = null;
                }
            }
        }    /**
         * 单击事件上下放映
         * @param e MouseEvent
         */
        public void c_mouseClicked(MouseEvent e) {
            if (e.getButton() == 1) {
                this.showImage(slideShow.forward());
            } else if (e.getButton() == 3) {
                this.showImage(slideShow.backward());
            }
        }
    }class BasicSlideShow_c_mouseAdapter extends MouseAdapter {    private BasicSlideShow adaptee;    BasicSlideShow_c_mouseAdapter(BasicSlideShow adaptee) {
            this.adaptee = adaptee;
        }    public void mouseClicked(MouseEvent e) {
            adaptee.c_mouseClicked(e);
        }
    }
      

  3.   

    现在MARK都不行了,还得多打几个字,郁闷
      

  4.   

    关于键盘监听,我也想知道,java能实现在后台运行时对键盘进行监听吗?换句话说,也就是运行窗口主体失去焦点以后(比如最小化到托盘区),还能够监听到键盘的快捷键。
      

  5.   

    java.awt.Toolkit.getDefaultToolkit().addAWTEventListener(listener, AWTEvent.KEY_EVENT_MASK);listener是你自己定义的监听器
      

  6.   

     Toolkit.getDefaultToolkit().addAWTEventListener(listener,eventMask);
    这个方法注册全局的监听机制,无论哪个窗口。里面注册为weakHashmap,应该不用考虑垃圾回收问题
      

  7.   

    Java本身是做不了键盘的全局监听的(就是在失去焦点的情况下监听键盘),javaGUI中的鼠标,键盘监听器都是在组件获得焦点时才会触发的!
    所以用单纯的Java做全局监听是做不了的,不过可以使用调用jni的方式实现!有一个开源项目正是封装了jni的复杂麻烦的调用操作。我试用了一下,感觉很不错!
    我的百度博客里面有使用的情况。http://hi.baidu.com/wzwahl36/blog/item/79b47813ed0e87c5f7039efd.html