14. januar 2003 - 19:48Der er
16 kommentarer og 3 løsninger
Midlertidigt stop af program
Hej eksperter
Jeg har et mindre problem (et af mange :) i et lille program jeg er ved at lave.
Jeg har en MainGUI klasse (en JFrame) som indeholder en Jlist. Så har jeg en anden klasse VisRetGUI (en ny JFrame), hvori der kan indtastes nogle data.
Mit problem er at jeg gerne vil have at MainGUI venter til VisRetGUI bliver lukket, og derefter opdatere min JList.
Her er et eksempel der viser hvordan man bruger JOptionPane. Bemærk at knappen er inaktiv til du har foretaget dit valg. import javax.swing.*; import java.awt.event.*; public class ModalTest { public static void main(String[] args) { JFrame f1 = new JFrame(); JCheckBox box = new JCheckBox("Check me!"); f1.getContentPane().add(box); JFrame f2 = new JFrame(); JButton button = new JButton("I'm inactive!"); f2.getContentPane().add( button ); f2.pack(); f2.show(); JOptionPane.showConfirmDialog(f2,f1.getContentPane(),"Check",JOptionPane.PLAIN_MESSAGE); } }
public class MainGUI extends JFrame { . . . private class visRetAL implements ActionListener { public void actionPerformed(ActionEvent e) { int i = dvdListe.getSelectedIndex();
if (i != -1) { setEnabled(false); VisRetGUI visRetGUI = new VisRetGUI(gm, i);
public class MainGUI extends JFrame { . . . private class visRetAL implements ActionListener { public void actionPerformed(ActionEvent e) { int i = dvdListe.getSelectedIndex();
if (i != -1) { setEnabled(false); VisRetGUI visRetGUI = new VisRetGUI(gm, i);
class VisRetGUI extends JFrame { . . . private class lukAL implements ActionListener { public void actionPerformed(ActionEvent e) { // Fortælle MainGUI at den skal fortsætte? dispose(); } } //private class lukAL implements ActionListener }
public class MainGUI extends JFrame { . . . private class visRetAL implements ActionListener { public void actionPerformed(ActionEvent e) { int i = dvdListe.getSelectedIndex();
if (i != -1) { setEnabled(false); VisRetGUI visRetGUI = new VisRetGUI(gm, i);
class VisRetGUI extends JFrame { . . . private class lukAL implements ActionListener { public void actionPerformed(ActionEvent e) { // Fortælle MainGUI at den skal fortsætte? dispose(); } } //private class lukAL implements ActionListener }
public class MainGUI extends JFrame { public boolean waitForOtherFrame = false; // <----------- . . . private class visRetAL implements ActionListener { public void actionPerformed(ActionEvent e) { int i = dvdListe.getSelectedIndex();
if (i != -1) { setEnabled(false); waitForOtherFrame = true; // <------------------ VisRetGUI visRetGUI = new VisRetGUI(gm, i);
Har du prøvet med lidt System.out.println i de 2 klasser og set om problemet er at VisRetGUI aldrig kører p.g.a. sleep'en eller waitForOtherFrame bare ikke biver sat ? ALtså: hvor hænger den ?
VisRetGUI bliver startet, men der kommer ikke noget frem i JFramen. Jeg tror det er på grund af lykken at programmet fryser. Hvis ingen trykker på luk knappen, vil lykken jo kører uendeligt.
I øvrigt kan jeg heller ikke finde ud af at sætte somevariablecontainingmaingui (smukt navn :) til at referere til MainGUI.
Hvis ikke du har den reference så vil løkken køre uendeligt.
Du laver en: private MainGui somevariablecontainingmaingui; i VisRetGUI og tilføjer en MainGUI i argument-listen til constructoren og sender så this med over fra MainGUI.
Ok. Du skal da have mange tak for forsøget. Jeg lader spørgsmølet stå åbent i et stykke tid endnu, det kan jo være at der kommer nogen forbi der ved hvordan det skal gøres.
Jeg har lavet VisRetGUI om til en JDialog, og indsat linien "setModal(true);".
I får lige nogle points for forsøget.
Synes godt om
Ny brugerNybegynder
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.