27. november 2004 - 18:30Der er
6 kommentarer og 1 løsning
Ændring af design ved brug af JOptionPane.showOptionDialog
Jeg er igang med at lave et lille program, hvor man skal kunne vælge hvad man vil, ud fra trykknapper lavet med JOptionPane.showOptionDialog. Jeg har indtil videre 7 knapper, og de fylder for meget i bredden, så vinduet er bredere end mit skærmbillede (Ja, det er 1280*1024) ;-) Hvordan formatterer jeg dette vindue så jeg kan få boxene under hinanden eller i 2 rækker istedet?
jeg tror ikke du direkte kan ændre i layoutet i en dialog fra JOptionPane, men du kan lave en nedarvning af JDialog hvorpå du selv kan bestemme hvad der skal sidde hvor.
Du kan også bare lave noget i retningen af:
JDialog dialog = new JDialog(new BorderLayout()); JButton knap = new JButton("en tekst"); knap.addactionlistener(en actionlistener); dialog.add(knap, BorderLayout.SOUTH);
altså du kan også bare benytte en JDialog som en container og så tilføje de elementer du har brug for.
JPanel nord = new JPanel(new FlowLayout()); JButton menuvalg1 = new JButton("Menuvalg1"); menuvalg1.addActionListener(this); nord.add(menuvalg1); JButton menuvalg2 = new JButton("Menuvalg2"); menuvalg2.addActionListener(this); nord.add(menuvalg2); JButton menuvalg3 = new JButton("Menuvalg3"); menuvalg3.addActionListener(this); nord.add(menuvalg3); JButton menuvalg4 = new JButton("Menuvalg4"); menuvalg4.addActionListener(this); nord.add(menuvalg4);
dialog.add(nord, BorderLayout.NORTH);
JPanel syd = new JPanel(new FlowLayout()); JButton menuvalg5 = new JButton("Menuvalg5"); menuvalg5.addActionListener(this); syd.add(menuvalg5); JButton menuvalg6 = new JButton("Menuvalg6"); menuvalg6.addActionListener(this); syd.add(menuvalg6); JButton menuvalg7 = new JButton("Menuvalg7"); menuvalg7.addActionListener(this); syd.add(menuvalg7); JButton menuvalg8 = new JButton("Menuvalg8"); menuvalg8.addActionListener(this); syd.add(menuvalg8);
dialog.add(syd, BorderLayout.SOUTH);
}
public void actionPerformed(ActionEvent e){ if(e.getsource().equals("Menuvalg8")){ //lukker dialogen dialog.dispose(); // gør noget her } if(e.getsource().equals("Menuvalg7")){ //lukker dialogen dialog.dispose(); // gør noget her } osv..
du kan også lade Test nedarve fra JDialog, men hvilken metode der er bedst kommer an på opbygningen af dit program.
det eksempel jeg har skrevet ovenfor er forholdsvist højt koblet til den klasse det kører i, her kunne det være en fordel at lave en ny klasse som nedarver fra JDialog. Men igen, det kommer helt an på dit program hvad der er den bedste løsning.
Udmærket. Det var vist hvad jeg havde brug for. Troede dog at jeg kunne formattere direkte i JOptionPane.showOptionDialog men det er åbenbart ikke muligt. Lægger du et svar så du kan modtage din belønning? ;)
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.