Avatar billede simonb Nybegynder
22. februar 2002 - 09:50 Der er 1 kommentar og
1 løsning

JInternalFrame

Jeg har lavet et program hvor jeg i en JFrame har sat en JInternalFramne og kune godt tænke mig hvis der var en eller anden der havde et stykke kode eller en metode der kunne gøre at denne ikke kunne flyttes, jeg tænker ikke på resizable, men mere noget med at framen skal fyses fast hvor den er sat
Avatar billede hyperactive Nybegynder
22. februar 2002 - 09:52 #1
Internal Frame..... Var det ikke en sang med Bangles.......???? Nåhhh nej.... det var Eternal Flame *G*
Avatar billede logical Nybegynder
24. februar 2002 - 05:46 #2
Du kan ikke på en InternalFrame bestemme, at det ikke må flyttes, ligesom det gælder for en JFrame. Det du skal bruge af adfærd ligner et JWindow, men der findes ikke en JInternalWindow klasse...

Nå, men alle frames i en JDesktopPane håndteres af en DesktopManager, som har medindflydelse, herunder når frames bliver flyttet og resizet. Her kan man lave et hack for at løse din situation.

Eks:

public class Test {
public static void main(String[] args) {
  JFrame f = new JFrame("Hello desk world");
  JDesktopPane desk = new JDesktopPane();
  // Populate with internals or whatever.

  desk.setDesktopManager(new SampleDesktopManager()); // LOOK HERE!
  f.setContentPane(desk);
  ...
}
}

// This code is provided only to show the principles, it is not
// intended as a good implementation of a given problem.
public class SampleDesktopManager extends DefaultDesktopManager {
  protected static final String RESIZING="RESIZING";

  public void beginResizingFrame(JComponent f, int dir) {
    f.putClientProperty(RESIZING, Boolean.TRUE);
  }
  public void endResizingFrame(JComponent f) {
    f.putClientProperty(RESIZING, Boolean.FALSE);
  }

  public void setBoundsForFrame(JComponent f, int x, int y, int w, int h) {
    if(f instanceof JInternalFrame) {
      JInternalFrame frame = (JInternalFrame) f;
      boolean resizing = false;
      Object o = frame.getClientProperty(RESIZING);
      if (o != null && o instanceof Boolean)
        resizing=((Boolean)o).booleanValue();

      if (!resizing) {
        // If not resizing, then we are moving.
        if (isThisTheFrameNotToMove(frame))
          return;
      }
    }
    // All else will be set normally.
    super.setBoundsForFrame(f, x, y, h);
  }
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester