|
| Problemer med modal JDialog Fra : Daniel Jacobsen |
Dato : 29-05-02 20:20 |
|
Hej der!
Jeg har et (stort) problem i min GUI-programmering:
Hvis man fra en JFrame ved tryk på en knap åbner en JDialog (altså i det
færdige program), og lige efter åbner et andet program, f.eks. MicroSoft
Word, og arbejder lidt der. Når man så vender tilbage til sit Java-program,
er dialogen forsvundet om bag ved framen. Da dialogen er modal, kan man slet
ikke komme i kontakt med programmet.
Det eneste man kan gøre er at vælge progrrammet ved brug af Alt+Tab. Så
kommer dialogen ovenpå igen. Det er bare ikke særlig optimalt, især ikke
hvis jeg øsnker at udgive mit program. Langt de fleste brugere vil ikke vide
hvad de skal gøre og tro det er en fejl i programmet.
Nogen der ved, hvordan jeg løser dette problem, så dialogen IKKE hopper om
bag ved framen, hvis programmet mister fokus??
Daniel J.
| |
Jan Oksfeldt Jonasen (29-05-2002)
| Kommentar Fra : Jan Oksfeldt Jonasen |
Dato : 29-05-02 19:57 |
|
Daniel Jacobsen <dj@g-a-f.dk> wrote:
> Hej der!
>
> Jeg har et (stort) problem i min GUI-programmering:
>
> Hvis man fra en JFrame ved tryk på en knap åbner en JDialog (altså i det
> færdige program), og lige efter åbner et andet program, f.eks. MicroSoft
> Word, og arbejder lidt der. Når man så vender tilbage til sit Java-program,
> er dialogen forsvundet om bag ved framen. Da dialogen er modal, kan man slet
> ikke komme i kontakt med programmet.
>
> Det eneste man kan gøre er at vælge progrrammet ved brug af Alt+Tab. Så
> kommer dialogen ovenpå igen. Det er bare ikke særlig optimalt, især ikke
> hvis jeg øsnker at udgive mit program. Langt de fleste brugere vil ikke vide
> hvad de skal gøre og tro det er en fejl i programmet.
>
> Nogen der ved, hvordan jeg løser dette problem, så dialogen IKKE hopper om
> bag ved framen, hvis programmet mister fokus??
>
Der er uden tvivl en bedre måde, men et forslag er:
Før åbning af dialogen tilføjer du en java.awt.MouseListener til din
frame.
JFrame mitVindue.....
//Nu skal der åbnes en modal dialog
JDialog dialog....
MouseListener ml = new MouseAdapter()
{
public void mouseEntered(MouseEvent e)
{
dialog.toFront();
}
};
mitVindue.addMouseListener(ml);
dialog.show();
mitVindue.removeMouseListener(ml);
Den anonyme implementation af MouseAdapter/MouseListener registrere når
musen kommer ind i dit vindue, når dette sker smider den dialog øverst
af alle vinduer. Dette kan dog skabe nogle morsomme effekter, hvis du
har flere dialoger åbne på samme tid.
--
Mvh/re Jan Jonasen
jonasen (at) it (dot) dk
If I wanted culture, I'd eat yogurt. Ikke kun Tuborg har noget i gære.
| |
Lars Dam (29-05-2002)
| Kommentar Fra : Lars Dam |
Dato : 29-05-02 19:55 |
|
On Wed, 29 May 2002 12:19:38 -0700, "Daniel Jacobsen" <dj@g-a-f.dk>
wrote:
>Hej der!
>
>Jeg har et (stort) problem i min GUI-programmering:
>
>Hvis man fra en JFrame ved tryk på en knap åbner en JDialog (altså i det
>færdige program), og lige efter åbner et andet program, f.eks. MicroSoft
>Word, og arbejder lidt der. Når man så vender tilbage til sit Java-program,
>er dialogen forsvundet om bag ved framen. Da dialogen er modal, kan man slet
>ikke komme i kontakt med programmet.
Mit gæt er at du skal give frame'en med som parameter til
konstruktøren af dialogen?
vh. ld
| |
Daniel Jacobsen (30-05-2002)
| Kommentar Fra : Daniel Jacobsen |
Dato : 30-05-02 06:07 |
|
Det gør jeg også :)
| |
Lars Dam (29-05-2002)
| Kommentar Fra : Lars Dam |
Dato : 29-05-02 21:55 |
|
On Wed, 29 May 2002 22:07:13 -0700, "Daniel Jacobsen" <dj@g-a-f.dk>
wrote:
>Det gør jeg også :)
Bare lige for at være sikker:
Du har vel lavet din egen dialog klasse; husker du at kalde
super(frame) i konstruktøren?
vh. ld
| |
Daniel Jacobsen (30-05-2002)
| Kommentar Fra : Daniel Jacobsen |
Dato : 30-05-02 08:20 |
|
Jada, jeg laver min GUI i JBuilder (6.0 Ent), så alle de ting er klaret
automatisk, men jo, jeg har tjekket at framen er parent for dialogen. Jeg
ved koden er korrekt. :)
| |
Daniel Jacobsen (01-06-2002)
| Kommentar Fra : Daniel Jacobsen |
Dato : 01-06-02 04:26 |
|
Ve' du hva? Alle de steder jeg initerer en dialog har jeg skrevet "null" ved
frame i stedet for "this". Så tror da pokker det volder problemer.
Du havde ret :) tak for hjælpen.
| |
Lars Dam (31-05-2002)
| Kommentar Fra : Lars Dam |
Dato : 31-05-02 20:07 |
|
On Fri, 31 May 2002 20:26:03 -0700, "Daniel Jacobsen" <dj@g-a-f.dk>
wrote:
>Ve' du hva? Alle de steder jeg initerer en dialog har jeg skrevet "null" ved
>frame i stedet for "this". Så tror da pokker det volder problemer.
>Du havde ret :) tak for hjælpen.
Hvad er det man siger? Been there, done it
vh. ld
| |
Brian Matzon (31-05-2002)
| Kommentar Fra : Brian Matzon |
Dato : 31-05-02 21:13 |
|
"Lars Dam" <larsdamXXspamXXprotectionXX@post2.tele.dk> wrote in message
news:5diffuk2p64dgpnusrfr574vgsv2cbchj0@4ax.com...
> On Fri, 31 May 2002 20:26:03 -0700, "Daniel Jacobsen" <dj@g-a-f.dk>
> wrote:
>
> >Ve' du hva? Alle de steder jeg initerer en dialog har jeg skrevet "null"
ved
> >frame i stedet for "this". Så tror da pokker det volder problemer.
> >Du havde ret :) tak for hjælpen.
>
> Hvad er det man siger? Been there, done it
Næ - Been there, done that, men så er der vist oxo
dømt flueknepperi ;) - men det er jo netop essensen i denne
NG, vi har alle prøvet alle de underlige ting, som vi så kan
belære andre om...
/Brian Matzon
| |
|
|