# JDialog nicht verschiebbar machen?



## Cole (5. Jul 2006)

Hi, 
ist es irgendwie möglich ein JDialog so einzustellen, dass man es nicht mehr verschieben kann? Hab keine entsprechende Methode gefunden (à la setMovable(false)). 
Wisst ihr ob das geht?


----------



## thE_29 (5. Jul 2006)

setUndecorated(false);

Dann hast keine Titelbar, was imho dazu führt das du es net verschieben kannst..

Oder mit windowListener und immer die Position zurücksetzen


----------



## Guest (5. Jul 2006)

Hmm, damit würde es gehen. Danke für den Tipp!!
Ist nur schade, dass die Titelbar komplett weg ist (wegen Design).

Zu dem WindowListener:
Wie funktioniert das genau?
Oder besser zuvor: was für ein Effekt bringt das genau? Wenn das Fenster zwar verschiebbar ist aber wieder zurückhüpft bringt mir das leider nix.


----------



## thE_29 (5. Jul 2006)

```
this.getContentPane().addHierarchyBoundsListener(new HierarchyBoundsAdapter(){
      public void ancestorMoved(HierarchyEvent e) 
      {
        if(old_point != null)
          setLocation(old_point);
        validate();
        repaint();
      }
      }
    });
```

old_point ist java.awt.Point und den Punkt musst halt vorher abspeichern!


----------



## Cole (5. Jul 2006)

Und wie/wo muss ich das einfügen?
Hab hier ein kleines Programm zum Testen gemacht:


```
import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JButton;

import javax.swing.JPanel;
import javax.swing.JDialog;


public class Beispiel
{

  JPanel glass = new JPanel(new GridLayout(0,1));

  private JFrame jFrame = null;  //  @jve:decl-index=0:visual-constraint="4,6"
  private JPanel jContentPane = null;
  private JPanel jPanel = null;
  private JButton jButton2 = null;
  private JPanel jPanel1 = null;

  private JButton jButton = null;
  private JDialog jDialog = null;  //  @jve:decl-index=0:visual-constraint="404,109"
  private JPanel jContentPane1 = null;
  private JPanel jPanel2 = null;
  private JButton jButton1 = null;



  private JFrame getJFrame ( )
  {
    if (jFrame == null)
    {
      jFrame = new JFrame ( );
      jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      jFrame.setSize(new java.awt.Dimension(374,276));
      jFrame.setTitle("Hallo,Testbild");

      jFrame.setContentPane(getJContentPane());
      jFrame.setVisible(true);



    }
    return jFrame;
  }


  private JPanel getJContentPane ( )
  {
    if (jContentPane == null)
    {
      jContentPane = new JPanel ( );
      jContentPane.setLayout(new BorderLayout());
      jContentPane.add(getJPanel(), java.awt.BorderLayout.WEST);

    }
    return jContentPane;
  }


  private JPanel getJPanel ( )
  {
    if (jPanel == null)
    {

      jPanel = new JPanel ( );
      jPanel.setLayout(new BorderLayout());
      jPanel.add(getJPanel1(), java.awt.BorderLayout.SOUTH);

    }
    return jPanel;
  }


  private JButton getJButton2 ( )
  {
    if (jButton2 == null)
    {
      jButton2 = new JButton ( );

      jButton2.setText("sdfsd");
      jButton2.setPreferredSize(new java.awt.Dimension(80,50));
      jButton2.addActionListener (new java.awt.event.ActionListener ( )
      {
        public void actionPerformed (java.awt.event.ActionEvent e)
        {
         jDialog.setVisible(true);
        }
      });

    }
    return jButton2;
  }


  private JPanel getJPanel1 ( )
  {
    if (jPanel1 == null)
    {
      jPanel1 = new JPanel ( );
      jPanel1.add(getJButton2(), null);
      jPanel1.add(getJButton(), null);

    }
    return jPanel1;
  }


  private JButton getJButton ( )
  {
    if (jButton == null)
    {
      jButton = new JButton ( );
      jButton.setText("swdfsdf");
      jButton.addActionListener (new java.awt.event.ActionListener ( )
      {
        public void actionPerformed (java.awt.event.ActionEvent e)
        {
          System.exit(0);
        }
      });
    }
    return jButton;
  }

//Hier wird der JDialog erstellt
  private JDialog getJDialog ( )
  {
    if (jDialog == null)
    {
      jDialog = new JDialog ( );
      jDialog.setBounds(200,200,400,300);
      jDialog.setContentPane(getJContentPane1());
      jDialog.setVisible(false);
      jDialog.setResizable(false);
      
    }
    return jDialog;
  }


  private JPanel getJContentPane1 ( )
  {
    if (jContentPane1 == null)
    {
      jContentPane1 = new JPanel ( );
      jContentPane1.setLayout(new BorderLayout());
      jContentPane1.add(getJPanel2(), java.awt.BorderLayout.CENTER);

    }
    return jContentPane1;
  }


  private JPanel getJPanel2 ( )
  {
    if (jPanel2 == null)
    {
      jPanel2 = new JPanel ( );
      jPanel2.add(getJButton1(), null);
    }
    return jPanel2;
  }


  private JButton getJButton1 ( )
  {
    if (jButton1 == null)
    {
      jButton1 = new JButton ( );
      jButton1.setText("456");

    }
    return jButton1;
  }





  public static void main (String [ ] args)
  {

      Beispiel beispiel = new Beispiel();
      beispiel.getJFrame();
      beispiel.getJDialog();




  }
}
```

JDialog wird ab Zeile 127 erstellt!
Wo muss das rein?


----------



## thE_29 (5. Jul 2006)

Du musst das der Componente hinzufügen was du anzeigst!

Also entweder frame.add... oder dialog.add (statt this.add)


----------



## Cole (5. Jul 2006)

Ah, klasse!Danke.
Da hätte man selber draufkommen können.
Nur leider lässt sich das Fenster immer noch verschieben (es springt wieder zurück). Sollte eigentlich überhaupt  nicht bewegbar sein.
Hast du sonst noch ne Idee?


----------



## thE_29 (5. Jul 2006)

Via Robot den user ärgern


----------



## thE_29 (5. Jul 2006)

Sodala


```
private void cancelMouse()
  {
    if(this.isVisible()) //wird beim starten 1mal durchlaufen
    {
      try
      {
        Robot rb = new Robot();
        rb.mouseRelease(InputEvent.BUTTON1_MASK); //das man releasen kann
      }
      catch (Exception ex)
      {
        ex.printStackTrace(System.out);
      }
    }
  }
```

Und das dann im Listener einbaun


```
cancelMouse(); //gleich als 1ten befehl
        if(old_point != null) //......
```


----------



## Cole (5. Jul 2006)

Danke, damit zuckts zwar immer noch leicht ist aber schon bedeutend besser!


----------



## thE_29 (5. Jul 2006)

Jo, in java 1.5 könntet via der Mausklasse abfragen wo die Maus ist und wenn sie im titelbar ist, gleich wieder runtermoven via robot..


----------



## Cole (5. Jul 2006)

Hmm.
Ich denke fürs erste reicht das mal.
Vielen Dank für deine Hilfe!


----------



## The_S (5. Jul 2006)

thE_29 hat gesagt.:
			
		

> Jo, in java 1.5 könntet via der Mausklasse abfragen wo die Maus ist und wenn sie im titelbar ist, gleich wieder runtermoven via robot..



boah, was isn das für ne Userverarsche???  :lol:  :wink: 

Kann mir gut vorstellen, das da so manch ein DAU dran verzweifelt. Vorallem was willste machen, wenn er einfach mit der Maus die Anwendung schließen will???


----------



## thE_29 (5. Jul 2006)

Nix gibts :bae:

Das ist ne unverschiebbare und schließbare App


----------



## The_S (5. Jul 2006)

Immer diese Hobby- Scherzprogramm/Viren programmierer  :lol:  :toll:  :wink:


----------



## thE_29 (5. Jul 2006)

Ich mach gleich nen JDialog, setUndecoratetd(true) und leg nen Screenpature drauf und fang alle keys ab :bae:

Das nenn ich desktopsperren


----------



## Beni (5. Jul 2006)

Cole, bitte mach keine Crosspostings. Oder gib wenigstens an, dass du noch in anderen Foren dieselben Fragen stellst!

http://www.c-plusplus.de/forum/viewtopic-var-t-is-152285.html
(gilt auch für deinen zweiten Thread).


----------



## thE_29 (5. Jul 2006)

Da opfere ich meine Zeit für einen Crossposter auf..

Tz :/

:bae:


----------



## Leroy42 (5. Jul 2006)

Hobbit_Im_Blutrausch hat gesagt.:
			
		

> boah, was isn das für ne Userverarsche???  :lol:  :wink:



Seh' ich genauso  :noe: 

Warum dann nicht gleich richtig zur Sache gehen.



			
				Viele in diesem Forum und anderen hat gesagt.:
			
		

> Hi!
> 
> Wie kann ich verhindern, daß ein Benutzer auf mein
> Bild (Button, Listbox, ...) klicken kann?



Ich plädiere dafür, daß Microsoft in einer zukünftigen
Windows-Version daß Event-Handling hardwaremäßig
um eine neue Maus-Generation erweitert.

Dann kann jeder einen Mouse-Listener schreiben, der,
bei Überfahren einer Komponente, das _Drücken der Maustasten_
mechanisch unterbindet.

 :shock: 

Das schlag' ich denen gleich mal vor. Vielleicht werde ich ja
am Verkauf Millionen neuer Mäuse beteiligt   
...

[schild=6 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]Bis auf weiteres beim Patentamt zu finden![/schild]


----------



## lin (5. Jul 2006)

> Kann mir gut vorstellen, das da so manch ein DAU dran verzweifelt.


 Wahrscheinlich nicht nur ein DAU....


----------



## Cole (6. Jul 2006)

@ Beni: Sorry, wegen dem Crosspost, dachte nicht, dass das ein Problem ist.
Wollte einfach verschiedene Meinungen einholen (und im C++ forum kann man in der Javaabteilung schon mal tagelang warten bis man überhaupt ne Antwort bekommt).

Hiermit gelobe ich Besserung


----------



## Cole (6. Jul 2006)

thE_29 hat gesagt.:
			
		

> Sodala
> 
> 
> ```
> ...



Hab zu dieser Mausdeaktibirung ne Frage:
Wollte das bei 2 Fenster gleichzeitig machen, aber dann bekam ich nen NullPointerException.
Hab das hier geändert:

if(jDialog.isVisible() || jInternalFrame.isVisible())

der jDialog sieht so aus:

```
private JDialog getJDialog ( )
  {
    if (jDialog == null)
    {
      jDialog = new JDialog ( );
      jDialog.setSize(400,300);
      jDialog.setContentPane(getJContentPane1());
      jDialog.setVisible(false);
      jDialog.setResizable(false);
      jDialog.setUndecorated(true); //Titlebar weg, kein verschieben, sieht aber nicht gut aus


      jDialog.getContentPane().addHierarchyBoundsListener(new HierarchyBoundsAdapter(){
        public void ancestorMoved(HierarchyEvent e)
        {
          cancelMouse(); // Deaktiviert die Mauseingabe
          if(old_point != null) {
            jDialog.setLocation(old_point);
          jDialog.validate();
          jDialog.repaint();
        }
        }
      });

    }
    return jDialog;
  }
```

und eigentlich genau gleich der jInternalFrame ( nur halt jInterFrame anstelle von jDialog und die Geschichte mit dem old_point hab entfernt).

Wenn ich nur den Code oben ( ab jDialog.getContentPane().addHierachy...) in einem von beiden drin habe, dann geht es, aber wenn ich beide drin hab bekomm ich nen NullPointer. 
Woran kann das liegen?

[edit]: Das ganze sieht dann so aus;:


```
private JDialog getJDialog ( )
  {
    if (jDialog == null)
    {
      jDialog = new JDialog ( );
      jDialog.setSize(400,300);
      jDialog.setContentPane(getJContentPane1());
      jDialog.setVisible(false);
      jDialog.setResizable(false);

      jDialog.getContentPane().addHierarchyBoundsListener(new HierarchyBoundsAdapter(){
        public void ancestorMoved(HierarchyEvent e)
        {
          cancelMouse(); // Deaktiviert die Mauseingabe
          if(old_point != null) {
            jDialog.setLocation(old_point);
          jDialog.validate();
          jDialog.repaint();
        }
        }
      });

    }
    return jDialog;
  }

  private JInternalFrame getJInternalFrame ( )
  {
    if (jInternalFrame == null)
    {
      jInternalFrame = new JInternalFrame ( );
      jInternalFrame.setTitle("Ein InternalFrame");
      jInternalFrame.setContentPane(getJContentPane2());
      jInternalFrame.setVisible(false);
      jInternalFrame.getContentPane().addHierarchyBoundsListener(new HierarchyBoundsAdapter(){
        public void ancestorMoved(HierarchyEvent e)
        {
          cancelMouse(); // Deaktiviert die Mauseingabe

          jInternalFrame.setLocation(old_point);
          jInternalFrame.validate();
          jInternalFrame.repaint();
          jInternalFrame.setVisible(true);

        }
      });
    }
    return jInternalFrame;
  }
```

Ich verstehe einfach nicht, wie da ein NullPointer zustanden kommen kann.

[Edit zum zweiten]:
Habs auf die Reihe bekommen, glaub ich! Hab ne zweite Methode cancelMouse2() gemacht, wo eigentlich das gleiche drin steht, nur auf den jInternalFrame bezogen und jetzt gehts auf einmal.


----------



## Cole (10. Jul 2006)

Nochmal ne Frage:

Habe die Maus für den InternalFrame deaktiviert, so wie wir das weiter oben besprochen haben, das funktioniert auch so wie es soll.
Aber jetzt hab ich das Problem, dass der "richtige" Frame, also das Teil aussen rum beim Verschieben nur so rumruckelt, er aber normal verschiebbar sein sollte.
Weiss da einer was? Beni?




```
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Point;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.HierarchyBoundsAdapter;
import java.awt.event.HierarchyEvent;
import java.awt.event.InputEvent;
import java.awt.event.MouseAdapter;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JButton;


import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JWindow;
import javax.swing.JInternalFrame;


public class Beispiel
{

  JPanel glass = new JPanel();
  private Point old_point = new Point(00,00);
  private JFrame jFrame = null;  //  @jve:decl-index=0:visual-constraint="4,6"
  private JPanel jContentPane = null;
  private JPanel jPanel = null;
  private JButton jButton2 = null;
  private JPanel jPanel1 = null;

  private JButton jButton = null;
  private JDialog jDialog = null;  //  @jve:decl-index=0:visual-constraint="380,385"
  private JPanel jContentPane1 = null;
  private JPanel jPanel2 = null;
  private JButton jButton1 = null;
  private JPanel jPanel3 = null;
  private JPanel jPanel4 = null;
  private JLabel jLabel = null;
  private JPanel jPanel5 = null;
  private JInternalFrame jInternalFrame = null;
  private JPanel jContentPane2 = null;
  private JPanel jPanel6 = null;
  private JButton jButton3 = null;
  private JButton jButton4 = null;
  private JFrame getJFrame ( )
  {
    if (jFrame == null)
    {
      jFrame = new JFrame ( );
      jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      jFrame.setSize(new java.awt.Dimension(445,317));
      jFrame.setTitle("Hallo,Testbild");

      jFrame.setContentPane(getJContentPane());
      jFrame.setVisible(true);



    }
    return jFrame;
  }


  private JPanel getJContentPane ( )
  {
    if (jContentPane == null)
    {
      GridLayout gridLayout = new GridLayout();
      gridLayout.setRows(1);
      jContentPane = new JPanel ( );
      jContentPane.setLayout(gridLayout);
      jContentPane.add(getJPanel(), null);
      jContentPane.add(getJPanel5(), null);
    }
    return jContentPane;
  }


  private JPanel getJPanel ( )
  {
    if (jPanel == null)
    {

      jPanel = new JPanel ( );
      jPanel.setLayout(new BorderLayout());
      jPanel.add(getJPanel1(), java.awt.BorderLayout.SOUTH);

    }
    return jPanel;
  }


  private JButton getJButton2 ( )
  {
    if (jButton2 == null)
    {
      jButton2 = new JButton ( );

      jButton2.setText("sdfsd");
      jButton2.setPreferredSize(new java.awt.Dimension(80,50));
      jButton2.addActionListener (new java.awt.event.ActionListener ( )
      {
        public void actionPerformed (java.awt.event.ActionEvent e)
        {
         jDialog.setVisible(true);
        }
      });

    }
    return jButton2;
  }



  private JPanel getJPanel1 ( )
  {
    if (jPanel1 == null)
    {
      jPanel1 = new JPanel ( );
      jPanel1.add(getJButton2(), null);
      jPanel1.add(getJButton(), null);

    }
    return jPanel1;
  }


  private JButton getJButton ( )
  {
    if (jButton == null)
    {
      jButton = new JButton ( );
      jButton.setText("swdfsdf");
      jButton.addActionListener (new java.awt.event.ActionListener ( )
      {
        public void actionPerformed (java.awt.event.ActionEvent e)
        {
          System.exit(0);
        }
      });
    }
    return jButton;
  }


  private JDialog getJDialog ( )
  {
    if (jDialog == null)
    {
      jDialog = new JDialog ( );
      jDialog.setSize(400,300);
      jDialog.setContentPane(getJContentPane1());
      jDialog.setVisible(false);
      jDialog.setResizable(false);

      jDialog.getContentPane().addHierarchyBoundsListener(new HierarchyBoundsAdapter(){
        public void ancestorMoved(HierarchyEvent e)
        {
          cancelMouse(); // Deaktiviert die Mauseingabe
          if(old_point != null) {
            jDialog.setLocation(old_point);
          jDialog.validate();
          jDialog.repaint();
        }
        }
      });

    }
    return jDialog;
  }

  private JInternalFrame getJInternalFrame ( )
  {
    if (jInternalFrame == null)
    {
      jInternalFrame = new JInternalFrame ( );
      jInternalFrame.setTitle("Ein InternalFrame");
      jInternalFrame.setPreferredSize(new java.awt.Dimension(100,69));
      jInternalFrame.setContentPane(getJContentPane2());
      jInternalFrame.setVisible(false);
      jInternalFrame.getContentPane().addHierarchyBoundsListener(new HierarchyBoundsAdapter(){
        public void ancestorMoved(HierarchyEvent e)
        {
          cancelMouse2(); // Deaktiviert die Mauseingabe

          jInternalFrame.setLocation(old_point);
          jInternalFrame.validate();
          jInternalFrame.repaint();
          jInternalFrame.setVisible(true);

        }
      });
    }
    return jInternalFrame;
  }


  private void cancelMouse()
  {
    if(jDialog.isVisible()  ) //wird beim starten 1mal durchlaufen
    {
      try
      {
        Robot rb = new Robot();
        rb.mouseRelease(InputEvent.BUTTON1_MASK); //das man releasen kann
      }
      catch (Exception ex)
      {
        ex.printStackTrace(System.out);
      }
    }

  }

  private void cancelMouse2()
  {
    if(jInternalFrame.isVisible()  ) //wird beim starten 1mal durchlaufen
    {
      try
      {
        Robot rb2 = new Robot();
        rb2.mouseRelease(InputEvent.BUTTON1_MASK); //das man releasen kann
      }
      catch (Exception ex)
      {
        ex.printStackTrace(System.out);
      }
    }

  }




  private JPanel getJContentPane1 ( )
  {
    if (jContentPane1 == null)
    {
      jContentPane1 = new JPanel ( );
      jContentPane1.setLayout(new BorderLayout());
      jContentPane1.add(getJPanel2(), java.awt.BorderLayout.CENTER);

    }
    return jContentPane1;
  }


  private JPanel getJPanel2 ( )
  {
    if (jPanel2 == null)
    {
      jPanel2 = new JPanel ( );
      jPanel2.setLayout(new BorderLayout());
      jPanel2.add(getJPanel3(), java.awt.BorderLayout.NORTH);
      jPanel2.add(getJPanel4(), java.awt.BorderLayout.CENTER);
    }
    return jPanel2;
  }


  private JButton getJButton1 ( )
  {
    if (jButton1 == null)
    {
      jButton1 = new JButton ( );
      jButton1.setText("456");

    }
    return jButton1;
  }






  private JPanel getJPanel3 ( )
  {
    if (jPanel3 == null)
    {
//      File bild = new File("U:/titlebar_2.jpg");

//      JLabel jLabel = null;
//      try
//      {
//       jLabel = new JLabel(new ImageIcon(ImageIO.read(bild)));

        jPanel3 = new JPanel ( );
//        jPanel3.add(jLabel);
//      }
//      catch (IOException e)
//      {
//
//        e.printStackTrace();
//      }


    }

    return jPanel3;
  }



  private JPanel getJPanel4 ( )
  {
    if (jPanel4 == null)
    {
      jPanel4 = new JPanel ( );
      jPanel4.add(getJButton1(), null);
    }
    return jPanel4;
  }



  private JPanel getJPanel5 ( )
  {
    if (jPanel5 == null)
    {
      jPanel5 = new JPanel ( );
      jPanel5.setLayout(new BorderLayout());
      jPanel5.add(getJInternalFrame(), java.awt.BorderLayout.CENTER);
    }
    return jPanel5;
  }



  private JPanel getJContentPane2 ( )
  {
    if (jContentPane2 == null)
    {
      jContentPane2 = new JPanel ( );
      jContentPane2.setLayout(new BorderLayout());
      jContentPane2.add(getJPanel6(), java.awt.BorderLayout.SOUTH);
    }
    return jContentPane2;
  }



  private JPanel getJPanel6 ( )
  {
    if (jPanel6 == null)
    {
      jPanel6 = new JPanel ( );
      jPanel6.add(getJButton3(), null);
      jPanel6.add(getJButton4(), null);
    }
    return jPanel6;
  }



  private JButton getJButton3 ( )
  {
    if (jButton3 == null)
    {
      jButton3 = new JButton ( );
      jButton3.setText("Button");
    }
    return jButton3;
  }



  private JButton getJButton4 ( )
  {
    if (jButton4 == null)
    {
      jButton4 = new JButton ( );
      jButton4.setText("Nocheiner");
    }
    return jButton4;
  }

  public void createGlass(){

    glass.addMouseListener( new MouseAdapter(){});
    glass.setOpaque(false);
    //jFrame.setGlassPane(glass);
    jInternalFrame.setGlassPane(glass);
    glass.setVisible(true);

  }
  public static void main (String [ ] args)
  {

      Beispiel beispiel = new Beispiel();
      beispiel.getJFrame();
      beispiel.getJDialog();
      beispiel.createGlass();




  }
}
```

Das Problem müsste ja hier liegen denk ich:

```
private JInternalFrame getJInternalFrame ( )
  {
    if (jInternalFrame == null)
    {
      jInternalFrame = new JInternalFrame ( );
      jInternalFrame.setTitle("Ein InternalFrame");
      jInternalFrame.setPreferredSize(new java.awt.Dimension(100,69));
      jInternalFrame.setContentPane(getJContentPane2());
      jInternalFrame.setVisible(false);
      jInternalFrame.getContentPane().addHierarchyBoundsListener(new HierarchyBoundsAdapter(){
        public void ancestorMoved(HierarchyEvent e)
        {
          cancelMouse2(); // Deaktiviert die Mauseingabe

          jInternalFrame.setLocation(old_point);
          jInternalFrame.validate();
          jInternalFrame.repaint();
          jInternalFrame.setVisible(true);

        }
      });
    }
    return jInternalFrame;
  }


  private void cancelMouse2()
  {
    if(jInternalFrame.isVisible()  ) //wird beim starten 1mal durchlaufen
    {
      try
      {
        Robot rb = new Robot();
        rb.mouseRelease(InputEvent.BUTTON1_MASK); //das man releasen kann
      }
      catch (Exception ex)
      {
        ex.printStackTrace(System.out);
      }
    }

  }
```


----------



## Beni (10. Jul 2006)

Ohne dass ich es getestet hätte...
Dein HierarchyBoundsListener reagiert auch, wenn das Frame rumgeschoben wird; denn das Frame ist ein Vorgänger des Internalframes.

Schau dir mal an, was das HierarchyEvent als Source/Changed/Component angiebt. Wenn das Frame verschoben wird, sollte das etwas anderes sein; als wenn das Internalframe verschoben wird. Jenachdem, muss dann halt noch ein "if" in den Code.


----------



## Cole (10. Jul 2006)

Laut der API kann man dem Contructor vom HierachyEvent eine Komponente Source mitgeben:
Constructor Detail 

HierarchyEvent
public HierarchyEvent(Component source,
                      int id,
                      Component changed,
                      Container changedParent)

Aber ich versteh nicht wie ich das umsetzen soll, ich hab in der Klasse ja keinen Kontruktor HierachyEvent.


----------



## thE_29 (10. Jul 2006)

1. den hierarchy Boundslistener für den JDialog wegnehmen, da er sonst ja immer hingesetzt wird (NO NA NET.. für das ist der Listener da.. auf das hätte man selbst kommen können)

2. 
	
	
	
	





```
public void ancestorMoved(HierarchyEvent e)
        {
		  if(jInternalFrame.equals(e.getChanged()))
		  {
			cancelMouse2(); // Deaktiviert die Mauseingabe		
			jInternalFrame.setLocation(old_point);		  
		  }
          jInternalFrame.validate();
          jInternalFrame.repaint();
          jInternalFrame.setVisible(true);

        }
```


----------



## Cole (10. Jul 2006)

Was bedeutet NO NA NET?

Hatte es so versucht:
if(jInternalFrame.isSource()) aber das ging nicht, weil es die isSource Methode nicht gibt.
Danke dir!


----------



## thE_29 (10. Jul 2006)

NO NA NET => na was glaubst sonst (auf österreischisch )

Ungefähr halt...

Warum schaust net einfach mal in die API, steht ja alles da...


----------



## Cole (10. Jul 2006)

Danke. 
Zur API: gibt es eigentlich eine Art Muster wie man am besten vorgeht wenn man was in der API sucht?
Zum Beispiel hier wäre ich nie drauf gekommen, dass ich mir mit e.getchanged() die Source holen kann, auch nicht wenn mein Englisch besser wär :/
Bin wie gesagt noch recht neu auf dem Gebiet.


----------



## thE_29 (10. Jul 2006)

Immer nach den Klassen suchen, wovon du die Methode haben willst 

In dem Fall HierarchyEvent 

Dort sieht man die Methoden und Eigenschaften..

Englisch (wenigstens ein bisi) ist halt Voraussetzung..


----------



## Cole (10. Jul 2006)

Hmm klingt schon logisch irgendwie.  Das mit dem englisch... naja, kommt vlt mit der Zeit.
Mal gespannt wieviele Fragen mir zu dem Thema noch einfallen!


----------

