Avatar billede codemon Nybegynder
24. september 2002 - 13:37 Der er 2 kommentarer og
1 løsning

Kan ikke se minimeret indre vindue

Hvordan kan man få flyttet et minimeret indre vindue ( JInternalFrame ) når hovedvinduet ( JFrame ) resizes, eller maximeres / gendannes

Vi har i øjeblikket et hovedvindue hvor der kan åbnes indre vinduer, når disse minimeres lægger de indre vinduer sig i bunden af hovedvinduet, men de bliver liggende der når hovedvinduet bliver gjort mindre, og bliver så "væk". De bliver også liggende midt i hovedvinduet hvis de er minimeret når hovedvinduet er lille.

Vi vil gerne have at de hele tiden automatisk lægger sig i bunden af hovedvinduet.
Avatar billede codemon Nybegynder
24. september 2002 - 13:39 #1
Her er et kodeudsnit der viser hvad der er galt.

Minimeres det indrevindue og hovedvinduet gjort mindre, forsvinder det indre vindues ikon ned under bunden.

import javax.swing.*;

public class Driver
{
    public static void main(String[] args)
    {
        HovedVindue bHV = new HovedVindue();
        bHV.setSize(1024, 768);
        bHV.show();
    }
}

//--------------------------------------------------
class HovedVindue extends JFrame

    private JButton findKundeKnap;
    private JToolBar jToolBar1;
    private JDesktopPane jDesktopPane1;   
   
    public HovedVindue()
    {
          jToolBar1 = new JToolBar();
          findKundeKnap = new JButton();     
          jDesktopPane1 = new JDesktopPane();       
          getContentPane().setLayout(new java.awt.BorderLayout());   
          setTitle("TEST");
          setResizable(true);                   
          jToolBar1.setBorder(new javax.swing.border.EtchedBorder());
         
          addWindowListener(new java.awt.event.WindowAdapter() {
          public void windowClosing(java.awt.event.WindowEvent evt) {
              exitForm(evt);
          }
          });
             
          findKundeKnap.setText("FIND KUNDE");
          findKundeKnap.addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(java.awt.event.ActionEvent evt) {
              findKundeKnapActionPerformed(evt);
          }
          });
   
          jToolBar1.add(findKundeKnap);       
          getContentPane().add(jToolBar1, java.awt.BorderLayout.NORTH);   
          getContentPane().add(jDesktopPane1, java.awt.BorderLayout.CENTER);   
          pack();
    }
   
    private void exitForm(java.awt.event.WindowEvent evt)
    {
        System.exit(0);
    }
   
   
    private void findKundeKnapActionPerformed(java.awt.event.ActionEvent evt)
    {
        KundeIndreVindue kundeIndreVindue = new KundeIndreVindue();       
        jDesktopPane1.add(kundeIndreVindue);
        kundeIndreVindue.show();
        kundeIndreVindue.toFront();
    }
}

//--------------------------------------------------
// Dette skal altid ligge i bunder når hovedvinduet får ændret sin størrelse
class KundeIndreVindue extends JInternalFrame
{
    private JPanel nykundePanel; 
 
    public KundeIndreVindue()
    {             
    setIconifiable(true);
    nykundePanel = new JPanel();
    nykundePanel.setPreferredSize(new java.awt.Dimension(200, 300));     
      getContentPane().add(nykundePanel, java.awt.BorderLayout.CENTER);
     
    pack();
  }
}
Avatar billede rudidanmark Nybegynder
24. september 2002 - 20:26 #2
Du kan add'e en windowListener til dit hovedvindue i main:
bHV.addWindowListener(new minWindowListener());
du laver fx. en klasse minWindowListener, som kalder metoder på KundeIndreVindue(hvis du vil ændre på denne), når hovedvinduet ændres:

et eksempel:

import java.awt.event.*;

public class minWindowListener extends WindowAdapter
{
  KundeIndreVindue kundeIndreVindue;
  public minWindowListener(KundeIndreVindue kiv)
  {
    kundeIndreVindue = kiv;
  }

  //metode der kaldes fra Java når hovedvindue minimeres
  public void windowIconified(WindowEvent action)
  {
    //eksempel på metode der kunne kaldes
    kundeIndreVindue.gem();
  }
}

der kunne her være en metode gem i KundeIndreVindue, som kaldte en setBounds metode, eller en anden metode som JFrame kan bruge, efter hvad du vil:

public void gem()
{
  //ændre størrelse og placering på vindue
  setBounds(0,0,20,20); 
}

Du kan se mulighederne for windowListener på suns api
Avatar billede codemon Nybegynder
11. juni 2005 - 14:16 #3
_
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