Avatar billede jcg Nybegynder
25. april 2007 - 13:06 Der er 4 kommentarer og
1 løsning

Hvorfor virker Frame.toFront() kun på nogen maskiner?

Jeg har en applet som åner en Frame (frame1). I frame1 er det muligt at lave forskellige udskrifter. Til dette formål er der lavet en PrintManager som viser et preview i en ny Frame (frame2). Efter der er trykket på Udskriv i frame2 skal frames2 lukkes og frame1 skal være i front.
Dette har jeg gjort ved at sende frame1 med som argument til frame2, og lige inden frame2 lukkes kalder jeg frame1.toFront().
På nogle maskiner kommer frame1 ikke i front, men der imod html siden. Det er i øvrigt samme opførsel, som hvis jeg ikke sender frame1 med som argument til frame2 og kalder toFront().
Er der nogen som kan give en god forklaring på dette, og også meget gerne en løsning :)
Avatar billede _carsten Nybegynder
25. april 2007 - 15:25 #1
Det kan jeg ikke svare dig på, men du bør bygge det op ved hjælp af JDialog, når en dialog lukkes bringes dens parent automatisk i focus og bruger er tvunget til at lukke sidst åbnet dialog førend forrige dialog kan aktiveres.


Eksempel:

import java.awt.Frame;
import javax.swing.JDialog;
import javax.swing.JOptionPane;


public class Test extends javax.swing.JApplet {
   
    public void init() {
        try {
            java.awt.EventQueue.invokeAndWait(new Runnable() {
                public void run() {
                    initComponents();
                }
            });
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
   
                     
    private void initComponents() {
        jButton1 = new javax.swing.JButton();

        getContentPane().setLayout(new java.awt.FlowLayout());

        jButton1.setText("\u00c5ben dialog");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                open(evt);
            }
        });

        getContentPane().add(jButton1);

    }                     

    private void open(java.awt.event.ActionEvent evt) {                     
        frame = JOptionPane.getFrameForComponent(this);
       
        new DialogTest(frame, true, 0).setVisible(true);
    }                   
   
                 
    private javax.swing.JButton jButton1; 
    private Frame frame;
}







import java.awt.Frame;
import javax.swing.JOptionPane;


public class DialogTest extends javax.swing.JDialog {
   
    public DialogTest(java.awt.Frame parent, boolean modal, int nr) {
        super(parent, modal);
        this.nr = nr + 1;
        setTitle("Dialog " + this.nr);
        initComponents();
    }
   
                       
    private void initComponents() {
        jButton1 = new javax.swing.JButton();

        getContentPane().setLayout(new java.awt.FlowLayout());

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        jButton1.setText("\u00c5ben dialog");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                open(evt);
            }
        });

        getContentPane().add(jButton1);

        pack();
    }                     

    private void open(java.awt.event.ActionEvent evt) {                     
        Frame f = JOptionPane.getFrameForComponent(this);
       
        new DialogTest(f, true, nr).setVisible(true);
    }                   
   
               
    private javax.swing.JButton jButton1;             
    private int nr;
}
Avatar billede _carsten Nybegynder
05. maj 2007 - 13:20 #2
Hva så - er du kommet videre ???
Avatar billede jcg Nybegynder
07. maj 2007 - 07:46 #3
Tak for tippet Carten, og ja det virker.
Avatar billede _carsten Nybegynder
07. maj 2007 - 18:35 #4
Så vil jeg tillade mig at lægge et svar.
Avatar billede _carsten Nybegynder
18. maj 2007 - 07:48 #5
Lukketid ?
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