17. maj 2002 - 11:29Der er
4 kommentarer og 1 løsning
Swing: min JOptionPane fryser programmet!
Hej
Jeg har et program, hvor en messagebox skal komme men en eller anden ligegyldt acknowledgement. Men når jeg kører JOptionPane opt = new JOptionPane(); opt.showMessageDialog(null, "BAD!","DOH!" , JOptionPane.ERROR_MESSAGE);
Så kommer det yderste vindue, ingenting står indeni, og hele applikationen fryser. Hvis jeg eksekverer stumpen i et lille program for sig selv, virker det fint! Mit program er for indviklet at forklare her, så håber at nogen kan komme med nogle generelle årsager til denne fejl. På forhånd tak.
Når jeg afvikler SwingUtilities.invokeAndWait på min funktion, skriver compileren dette: 'void' type not allowed here SwingUtilities.invokeAndWait( JOptionPane.showMessageDialog(null,"TEST","FUCK noget test",JOptionPane.ERROR_MESSAGE));
når du bruger joptionpane.showmessagedialog som argument for invokeandwait bruger du return-værdien som argument for invokeandwait (og da den ikke retunerer noget (void) svarer det til at du kalder metoden uden noget. Istedet laver du en inner class el. f.eks.
class DialogInOtherThread implements Runnable {
public void run() { JOptionPane.showMessageDialog(null,"TEST","FUCK noget test",JOptionPane.ERROR_MESSAGE);
} }
når du vil kalde denne gør du så: SwingUtilities.invokeAndWait(new DialogInAnotherThread());
Det virker stadig ikke. Har fundet ud af, at det er hver gang når jeg kommer tilbage fra et kald over RMI til en server. Når clienten så får et svar tilbage, at funktionen på serveren er fuldført korrekt, vil JOptionPane ikke virke, men JDialog vil godt... Er der er et bug i java jdk 1.3? Ved kompilering med 1.4 kommer fejlen dog også. Ved at trykke CTRL+C kommer serveren med denne fejl: java.rmi.UnmarshalException: Error unmarshaling return header; nested exception is:
Andre ideér? Hvis jeg skal lægge min JOption pane i en Jdialog box, kan I så lægge eksempelkode på, hvordan det gøres?
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.