3

そのため、チャットのメイン インターフェイス ウィンドウを作成する jFrame があります。このウィンドウ/jFrame にはいくつかのボタンがあり、それぞれに jDialog が表示されます (Netbeans で以前に作成したもので、jDialog を親 (?) jFrame にドラッグします)。

私の問題は、両方のウィンドウがに設定されundecorated = trueているため、ウィンドウの一部をクリックしてドラッグすることで、ユーザーがすべてのウィンドウを自由にドラッグして移動できるようにしたいことです(装飾されていないときにタイトルバーをエミュレートします)

すべてのjFrameで、直後の次のコードでこれを達成しましたinitComponents():

    final Point point = new Point(0,0);        // Why 'final' and not simply Point point?     
    addMouseListener(new MouseAdapter() {  
        public void mousePressed(MouseEvent e) {  
            if(!e.isMetaDown()){  
                point.x = e.getX();  
                point.y = e.getY(); 
                System.out.println("Ratón pulsado: " + point.x + "," + point.y);
            }  
        }  
    });

    addMouseMotionListener(new MouseMotionAdapter() {  
        public void mouseDragged(MouseEvent e) {  
            if(!e.isMetaDown() &&  point.y <= 17){  //Coordinates of title bar, any X and up to 17px from the top border
                Point p = getLocation();  
                setLocation(p.x + e.getX() - point.x, p.y + e.getY() - point.y); 
                System.out.println("Ratón movido: " + (p.x + e.getX() - point.x) + "," + (p.y + e.getY() - point.y));
            }  
        }  
    }); 

ただし、このコードを jDialog で使用する方法がわかりません。ナビゲーターで右クリックして [コードのカスタマイズ] を選択すると、jFrame 全体が機能しなくなるため、そこに貼り付けることができません。私はjFramesのjDialogsの子のこのことで新しいので、いくつかのガイドラインで私を助けてください:)ありがとう

4

1 に答える 1

4

さて、@mKorbelが示唆したように、私はここに向かい、これを行うのに役立つ素晴らしいクラスを見つけましたComponentMover。あと2つの評判が必要なので、リンクを保存して、できるときに戻って賛成票を投じます。

完璧に機能し、思い通りに機能することを確認する必要がありますが、見た目は素晴らしいです! ありがとう!

于 2013-04-07T21:30:43.707 に答える