Avatar billede teck Nybegynder
29. november 2001 - 08:12 Der er 5 kommentarer og
1 løsning

Inaktiv skærmbillede

Hej, jeg har et problem. Jeg har to java filer, hvor det ene window bliver åbent når jeg trykker på en knap i det det andet. Ideen er så at det window der bliver lagt i baggrunden skal blive inaktiv, det vil sige, at man ikke skal have mulighed for at trykke på det første window før at man lukker det andet igen. Begge java-filer er implementeret som JInternalFrame. Håber der er en der kan hjælpe mig med at lave den inaktiv og aktiv igen!!!!
Avatar billede hbhansen Nybegynder
29. november 2001 - 12:50 #1
brug metoden setModal(boolean) hvor jeg mener at true betyder at man ikke kan trykke på vinuder bag og false betyder at man kan, prøv dig frem !
Avatar billede teck Nybegynder
29. november 2001 - 13:04 #2
Hvilke class skal impoteres for at få den til at virke? Den findes ikke i JInternalFrame
Avatar billede teck Nybegynder
29. november 2001 - 13:17 #3
JInternalFrame kan ikke nedarve fra en Dialog class!!!
Avatar billede tille Nybegynder
11. december 2001 - 01:24 #4
JInternalframes er svære at gøre modale men ved hjælp af glasspane kan det godt lade sig gøre

her er en løsning der kræver jdk 1.3

dette panel skal sættes som glasspane for din internal frame

// Subclass af JPanel
public class JRGlassPane extends JPanel implements AWTEventListener {
  BorderLayout borderLayout1 = new BorderLayout();
  InternalFrame parentFrame;

  public JRGlassPane(InternalFrame parent) {
    super();
    parentFrame = parent;
    // skal der være cursor, så fjern kommentar
    // this.setCursor(Cursor.getPredefinedCursor (Cursor.WAIT_CURSOR));
    setOpaque(false);
    addMouseListener(new MouseAdapter() {
    });
    addKeyListener(new KeyAdapter() {
    });
    try {
      jbInit();
    }
    catch(Exception ex) {
      ex.printStackTrace();
    }
  }


  // Override setVisible
  public void setVisible(boolean visible)
  {
     
      if (visible)
      {
        if (this.parentFrame == null)
          Toolkit.getDefaultToolkit().addAWTEventListener (this,
AWTEvent.KEY_EVENT_MASK);
      }
      else
      {
        Toolkit.getDefaultToolkit().removeAWTEventListener (this);
      }
      super.setVisible(visible);
  }

  public void eventDispatched(AWTEvent event)
  {
      if (event instanceof KeyEvent && event.getSource() instanceof
Component)
      {
        if (GUIUtilities.getInternalFrame((JComponent) event.getSource())
== this.parentFrame)
          // kun events for vores vindue
          ((KeyEvent)event).consume();
      }
  }


  void jbInit() throws Exception {
    this.setLayout(borderLayout1);
  }

}
Avatar billede tille Nybegynder
11. december 2001 - 23:15 #5
laver lige et svar så jeg kan få point hvis du kan bruge min løsning
Avatar billede teck Nybegynder
20. januar 2002 - 10:21 #6
intet virker
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