从一JFrame触发一份JDialog
怎么让他随JFrame的移动而移动

解决方案 »

  1.   

    package com.yyb.model;import java.awt.Dimension;
    import java.awt.Toolkit;
    import java.awt.Window;
    import java.awt.event.ComponentEvent;
    import java.awt.event.ComponentListener;import javax.swing.JDialog;
    import javax.swing.JOptionPane;public class GPCDialog extends JDialog implements ComponentListener { private Window god;
    private Dimension screen=Toolkit.getDefaultToolkit().getScreenSize();

    public GPCDialog() { } public GPCDialog(Window god) {
    setMyGod(god);
    } public void setMyGod(Window god) {
    if (this.god != null) {
    if (this.god.equals(god))
    return;
    else
    this.god.removeComponentListener(this);
    }
    this.god = god;
    if(god!=null)
    this.god.addComponentListener(this);
    } public void componentHidden(ComponentEvent e) {
    this.setVisible(false);
    } public void componentMoved(ComponentEvent e) {
    int godWidth=god.getWidth();
    int myX=god.getWidth()+god.getLocationOnScreen().x;
    if(myX>screen.getWidth()){
    myX=god.getLocationOnScreen().x-getWidth();
    if(Math.abs(myX)<getWidth()){
    JOptionPane.showMessageDialog(god,"跟屁虫说:没有我的容身之处了");
    return;
    }
    }
    this.setLocation(myX,god.getLocationOnScreen().y);
    } public void componentResized(ComponentEvent e) {

    } public void componentShown(ComponentEvent e) {
    this.setVisible(true);
    }}
    觉得可以给分,觉得不可以自己改下再给分
      

  2.   

    this.setVisible(..)用不了,晕,回家睡觉了
      

  3.   

    把事件写在window里面而不是dialog里面应该好些,慢慢琢磨,不要完全用别人的()