Avatar billede Simon Praktikant
14. juli 2005 - 10:13 Der er 7 kommentarer og
2 løsninger

JFrame, JPanel, dialog

Jeg vil gerne konstruere en dialog hvor brugeren foretager et valg, hvorefter dialogen lukkes, og valget returneres. For at oprette en dialog gør jeg følgende:
--------------------------------
JFrame myFrame = new JFrame();
ParameterSelecter paramSel = new ParameterSelecter(parameterTypeList);
   
myFrame.getContentPane().add(paramSel);
paramSel.setVisible(true);
myFrame.setVisible(true);

myFrame.setSize(700, 200);
----------------------------------
Klassen ParameterSelecter arver fra JPanel. Det er her brugeren foretager valget.

Jeg ønsker at når dialogen åbner stopper programmet bagved, og det fortsætter først når dialogen er lukket. Hvordan gøres dette smartest?
Avatar billede arne_v Ekspert
14. juli 2005 - 10:34 #1
Nu er jeg ikke GUI guru men jeg ville tro at du skulle extende JDialog
fremfor JPanel
Avatar billede mikkelbm Nybegynder
14. juli 2005 - 10:59 #2
Som Arne siger skal du have fat i en JDialog:

JFrame myFrame = new JFrame();

skal skiftes ud med:

JDialog myDialog = new JDialog (owner, true);

// owner = din JFrame - på den måde vil din dialog altid være ovenpå og låse det bagvedliggende.

http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JDialog.html
Avatar billede Simon Praktikant
14. juli 2005 - 11:25 #3
Nu er jeg ikke helt med. hvis JFrame skal udskiftes med en JDialog, hvad er det så for en JFrame jeg skal smide med i JDialog's konstruktør?
Avatar billede arne_v Ekspert
14. juli 2005 - 11:29 #4
nu ville jeg ikke erstatte din JFrame med en JDialog - jeg ville lade
ParameterSelecter extende JDialog fremfor JPanel
Avatar billede macpain Nybegynder
14. juli 2005 - 11:45 #5
public class ParameterSelecter extends JDialog {

evt. med

public ParameterSelecter (Frame owner, String title, boolean modal) {
    super(owner, title, modal);
    try {
      setDefaultCloseOperation(DISPOSE_ON_CLOSE);
      jbInit();
      pack();
    }
    catch (Exception exception) {
      exception.printStackTrace();
    }
  }
Avatar billede Simon Praktikant
14. juli 2005 - 11:48 #6
Tak for hjælpen begge to. Jeg har fået det til at virke.
Jeg lader min ParameterSelecter extende fra JDialog.

Dialogen kalder jeg således:

JFrame myFrame = new JFrame();
ParameterSelecter myPS =  new ParameterSelecter(parameterTypeList, myFrame);

I ParameterSelecter har jeg tilføjet følgende til konstruktøren:

public ParameterSelecter(List parameterTypeList, JFrame owner)
{
  super(owner,true);
  :
  :
  :
}

smider I ikke lige et svar hver?
Avatar billede mikkelbm Nybegynder
14. juli 2005 - 12:17 #7
Jeg vil nu stadig lade ParameterSelecter nedarve fra et JPanel, da det så kan genbruges i andre sammenhænge end ved en JDialog.

Og din kode fra før skal blot ændres til:

JDialog myDialog = new JDialog();
ParameterSelecter paramSel = new ParameterSelecter(parameterTypeList);
   
myDialog.getContentPane().add(paramSel);
paramSel.setVisible(true);
myDialog.setVisible(true);

myDialog.setSize(700, 200);



Og!

Følgende har ingen effekt:


JFrame myFrame = new JFrame();
ParameterSelecter myPS =  new ParameterSelecter(parameterTypeList, myFrame);

Da din JFrame ikke er synlig.
Avatar billede mikkelbm Nybegynder
14. juli 2005 - 12:23 #8
Og et svar...
Avatar billede arne_v Ekspert
14. juli 2005 - 13:14 #9
.
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