Avatar billede nolfi Nybegynder
27. november 2004 - 18:30 Der 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?

Vh. Anders.
Avatar billede sorensen_dk Nybegynder
27. november 2004 - 20:14 #1
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.
Avatar billede sorensen_dk Nybegynder
27. november 2004 - 20:15 #2
du er selvfølgelig ikke låst til et borderlayout, du kan bruge allle layoutmanagers java tilbyder
Avatar billede nolfi Nybegynder
27. november 2004 - 23:30 #3
OK.
Jeg er ikke helt inde i det her endnu, så jeg sender lige lidt kode med (halvt dansk, halvt norsk :-)), som du evt. kan kigge på:

String[] menyValg = { "Menyvalg1", "Menyvalg2", "Menyvalg3", "Menyvalg4", "Menyvalg5", "Menyvalg6", "Menyvalg7", "Menyvalg8"};

int valg = JOptionPane.showOptionDialog(null, "Velg aktion", "Butikken", 0,
                    JOptionPane.PLAIN_MESSAGE, null, menyValg, menyValg[0]);

switch (valg) {
osv. osv. osv.
}

Hvor ville du sætte din JDialog ind?
Avatar billede sorensen_dk Nybegynder
28. november 2004 - 12:27 #4
jeg vil designe en JDialog fra bunden.

altså noget i retningen af :

public class Test implements ActionListener{

private JDialog dialog;

public Test(){

dialog = new JDialog(new BorderLayout());

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..

}


}
Avatar billede sorensen_dk Nybegynder
28. november 2004 - 12:37 #5
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.
Avatar billede nolfi Nybegynder
28. november 2004 - 13:24 #6
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? ;)
Avatar billede sorensen_dk Nybegynder
28. november 2004 - 14:03 #7
svar
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