两中解决方案,第一,采用jni调用windows api
用jni的实现方式可参考这个帖子
http://forum.java.sun.com/thread.jsp?forum=57&thread=121761&start=0&range=15&hilite=false&q=第二、用纯java,但效果不太好,下面是纯java的实现的代码,可以直接编译运行
-----------------------------------------------------------------------
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.util.*; 
  
public class Notifier extends JFrame{             
    public JList list; 
    public DefaultListModel listModel; 
    public JScrollPane jsp; 
    public GridBagConstraints gbc; 
    public GridBagLayout gbl; 
    public Container c;     
    public MyWindow myWindow; 
    public JFrame frame; 
    public Notifier(){ 
        listModel = new DefaultListModel(); 
        list = new JList(listModel); 
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
        GraphicsDevice[] gs = ge.getScreenDevices(); 
        for (int j = 0; j < gs.length; j++) { 
            GraphicsDevice gd = gs[j];             
            if (gd.isFullScreenSupported()) {  
                if (gd.getType() == gd.TYPE_RASTER_SCREEN) {                     
                    frame = new JFrame(); 
                    frame.setUndecorated(true); 
                    frame.setDefaultLookAndFeelDecorated(false); 
                    frame.setVisible(false); 
                    gd.setFullScreenWindow(frame); 
                    break; 
                } 
            } 
        } 
        if(frame != null) frame.setVisible(false); 
    } 
     
    public void makeWindow(){ 
        if(frame == null) return; 
        try{ 
            list.removeMouseListener(myWindow); 
            list.removeMouseMotionListener(myWindow); 
        }catch(Exception e){} 
        myWindow = new MyWindow(frame); 
        frame.setVisible(false);         
        myWindow.setup(); 
    } 
    public static void main(String[] args){
     Notifier nf = new Notifier();
     nf.makeWindow();
    
    }     
    public class MyWindow extends JWindow implements MouseListener, 
MouseMotionListener{ 
        public JButton closeButton; 
        public Point offset; 
        public MyWindow(JFrame frame){ 
            super(frame);                       
        }         
        public void setup(){ 
            setVisible(true); 
            setLocation(300,100); 
            setSize(300, 300);  
            gbc = new GridBagConstraints(); 
            gbl = new GridBagLayout(); 
            c = this.getContentPane();             
            c.setLayout(new BorderLayout()); 
            this.setVisible(true); 
            JPanel p = new JPanel(); 
            p.setLayout(new BorderLayout()); 
            p.setBorder(BorderFactory.createLineBorder(new Color(0,0,0),2)); 
            p.addMouseListener(this); 
            p.addMouseMotionListener(this);             
            list.addMouseListener(this); 
            list.addMouseMotionListener(this);             
            jsp = new JScrollPane(list);       
            p.add(jsp, BorderLayout.CENTER);             
            c.add(p, BorderLayout.CENTER); 
            p.validate(); 
            c.validate(); 
            repaint(); 
        } 
         
        public void mouseClicked(java.awt.event.MouseEvent mouseEvent) {        }         
        public void mouseEntered(java.awt.event.MouseEvent mouseEvent) {        }         
        public void mouseExited(java.awt.event.MouseEvent mouseEvent) {        }         
        public void mousePressed(java.awt.event.MouseEvent mouseEvent) { 
            if(SwingUtilities.isLeftMouseButton(mouseEvent)){ 
                int count = mouseEvent.getClickCount(); 
                if(count == 1){ 
                    offset = new Point(mouseEvent.getX(), mouseEvent.getY()); 
                }else if(count == 2){ 
                    int i = list.locationToIndex(new Point(mouseEvent.getX(), 
mouseEvent.getY()));                     
                    if(i >= 0 && i < listModel.size()){ 
                        String s = (String)listModel.elementAt(i); 
                    }else return; 
                    if(c != null) ;
                } 
            }else if(SwingUtilities.isRightMouseButton(mouseEvent)){ 
                Vector v = new Vector();                 
                v.add("Close"); 
                ClickMenu menu = new ClickMenu(v, mouseEvent); 
                menu.show(mouseEvent.getComponent(), mouseEvent.getX(), 
mouseEvent.getY()); 
            } 
        }         
        public void mouseReleased(java.awt.event.MouseEvent mouseEvent) { 
            offset = null; 
        }         
        public void mouseDragged(java.awt.event.MouseEvent mouseEvent) { 
            if(SwingUtilities.isLeftMouseButton(mouseEvent)){ 
                myWindow.setLocation((int)(myWindow.getX() + mouseEvent.getX() - 
offset.getX()), (int)(myWindow.getY() + mouseEvent.getY() - offset.getY()));             
                c.repaint(); 
            } 
        }         
        public void mouseMoved(java.awt.event.MouseEvent mouseEvent) {        }         
    } 
    public void addToList(String s){ 
        if(listModel.contains(s)) return; 
        listModel.add(0, s); 
        list.revalidate(); 
        list.repaint(); 
    } 
    public void removeFromList(String s){ 
        listModel.removeElement(s); 
        list.revalidate(); 
        list.repaint(); 
    } 
    public String getFirst(){ 
        if(listModel.size() > 0); 
        return (String)listModel.get(0); 
    } 
    public class ClickMenu extends JPopupMenu implements ActionListener {         
        MouseEvent e; 
        public ClickMenu(Vector menu, MouseEvent e){ 
            this.e = e; 
            JMenuItem tmpItem;             
            for(int x=0;x<menu.size();x++){ 
                add(tmpItem = new JMenuItem((String)menu.elementAt(x))); 
                tmpItem.addActionListener(this); 
            } 
        } 
        public void actionPerformed(java.awt.event.ActionEvent actionEvent){                                         
            String command = actionEvent.getActionCommand(); 
            if(command.equals("Close")){  
                myWindow.setVisible(false);
                System.exit(0);
            } 
                         
        }                 
    } 
}

解决方案 »

  1.   

    这个事情,直接用java的jdk函数是不能实现的,原因很简单,因为java程序是运行在JVM中的,而要是java窗口像realplayer一样出现在所有窗体之前,就必须知道当前到底有多少个窗口被打开了(不管是ie,还是其他的东东)。要实现查点窗口的目的就必须用到操作系统的api。
    解决的办法也不难,可以使用java的jni技术。步骤如下,先用其他语言写一个dll(比如vc++,vb等等,这些语言调用os的api函数相当简单,如果用这些语言实现你的需求,简单的就是一个函数调用而已),然后通过java的jni技术调用这个dll,一切就ok了。至于jni是怎么使用的,你可以随便找一本java书,即可。推荐看看《java核心技术》下卷。