Newsgroup: it.comp.java
Titolo: "bloccare" posizione di un frame

Ciao a tutti, vorrei capire come posso  impedire lo spostamento di un JFrame.
Ho provato a reimpostare la pos. in caso di spostamento,
ma va in loop. 
Il codice e' + o - questo:
public class Frame1 extends JFrame {
...
  public Frame1() {
...
    this.addComponentListener(new ComponentAdapter() {
      public void componentMoved(ComponentEvent e) {
        this.setLocation(0,0);
      }
    });
  }
}
grazie, ciao.
Cristiano

ma va in loop.
Stai facendo una ricorsione.
Provo a darti qualche spunto: bada che sono tutte cose che NON ho
provato :-\
Prova a spezzare il loop mettendo una condizione.
Oppure fai l'override di setLocation e mettici la condizione.
Oppure prova disableEvent() e disabilita l'evento giusto.
Oppure... non lo so!? Magari qualcun altro ha una soluzione testata.
HTH
-- 
Ciao
	Fabrizio C.

 disabilita l'evento giusto.
...
   this.addComponentListener(new ComponentAdapter() {
      public void componentMoved(ComponentEvent e) {
	this.disableEvents(ComponentEvent.COMPONENT_MOVED);
        this.setLocation(0,0);
	this.enableEvents(ComponentEvent.COMPONENT_MOVED);
      }
    });
...
va in loop ugualmente.
Ho provato anche a fare l'overriding di addComponentListener(),
memorizzare il comp.list. in una var e fare remove prima del setLocation
e super.add dopo ottenendo lo stesso risultato.
grazie comunque.

e super.add dopo ottenendo lo stesso risultato.
Mi sembra che qui tu sia "partito per la tangente" ;-). Forse ti stai
complicando un po' troppo le idee.
Ho fatto la prova che allego sotto. Funzionicchia, nel senso che non è
bellisimo a vedersi e non mi sembra molto elegante, ma la finestra sta
al suo posto. Soprattutto non fa nessun loop (che per la verità non ho
rilevato nemmeno usando il frammento di codice che hai postato in
origine).
Certo sarebbe meglio prevenire (cioè non farla spostare del tutto),
ma...
/************************************************************/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Frame1 extends JFrame {
  private static final int fixedX = 100;
  private static final int fixedY = 100;
  public Frame1() {
    super("Devo stare ferma!");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(200, 100);
    setLocation(fixedX, fixedY);
    addComponentListener(new ComponentAdapter() {
      public void componentMoved(ComponentEvent e) {
        Point p = e.getComponent().getLocation();
        if ((p.x != fixedX)||(p.y != fixedY)) {
          setLocation(fixedX, fixedY);
        }
      }
    });
  }
 
  public static void main (String[] args) {
    JFrame finestraFissa = new Frame1();
    finestraFissa.setVisible(true);
    // Provo a spostarla "anche" da codice
    finestraFissa.setLocation(2*fixedX, 2*fixedY);
    finestraFissa.setLocation(3*fixedX, 3*fixedY);
    return;        
  }
}
-- 
Ciao
	Fabrizio C.

Oppure prova disableEvent() e disabilita l'evento giusto.
Pensavo funzionasse, invece o è una via sbagliata o sbaglio io
qualcosa. Ho provato e non funziona.
Sorry.
-- 
Ciao
	Fabrizio C.

 Coordinate volute == Coordinate attuali
ok, ma quando richiamo set location va comunque in loop,
ma ho almeno scoperto il perche': la colpa e' del window
manager (sawfish su linux) che restituisce coordinate
con un offset di x+5 e y+22 :(
quindi devo controllare se:
x=105
y=122
quando imposto setLocation(100,100).
Con altri wm l'offset e' diverso :((,
con win non so...
grazie per esserti sbattuto, ciao.
ps. j2sdk1.3.0 di blackdown + Mandrake 8.0