Avatar billede jarret Nybegynder
25. april 2005 - 13:48 Der er 14 kommentarer og
1 løsning

Hvordan styrer jeg bedst mine GUI elementer?

Jeg skal lave en brugergrænseflade hvor højredelen skal være et variabelt felt og venstredelen en menu.

Menuen består af en række elementer - tekst felter - knapper - og inputtekstfelter.

Hvordan styrer jeg det bedst. -er det noget med at putte grid inden i grid eller?
--jeg er ret ny i java
Avatar billede arne_v Ekspert
25. april 2005 - 13:55 #1
måske:

Grid Layout med 2 JPanel

venstre JPanel: Grid Layout med JTextField & JButton
Avatar billede jarret Nybegynder
25. april 2005 - 14:03 #2
jeg har i mellem tiden lige skrevet denne her:


public class Butikken{
   
   
    public Butikken(){
   

        JPanel gui = new JPanel();
        JPanel venstre = new JPanel();
        JPanel højre = new JPanel();
       
        JLabel ht = new JLabel("Højre top");
        JLabel hc = new JLabel("Højre center");
        JLabel hb = new JLabel("Højre bund");
        JLabel vt = new JLabel("Venstre top");
        JLabel vc = new JLabel("Venstre center");
        JLabel vb = new JLabel("Venstre bund");                               
       
       
        JPanel htop= new JPanel();
        htop.add(ht);
       
        JPanel hcenter= new JPanel();
        hcenter.add(hc);
       
        JPanel hbund = new JPanel();       
        hbund.add(hb);
       
        JPanel vtop= new JPanel();
        vtop.add(vt);
       
        JPanel vcenter= new JPanel();
        vcenter.add(vc);
       
        JPanel vbund = new JPanel();
        vbund.add(vb);
       

       
       
        venstre.setLayout(new GridLayout(1, 3));
        venstre.add(vtop);
        venstre.add(vcenter);
        venstre.add(vbund);
       
               
        højre.add(htop);
        højre.add(hcenter);
        højre.add(hbund);
       
       
       
        højre.setLayout(new GridLayout(1, 3));
       
               
        gui.add(venstre);
        gui.add(højre);
       

               
        JFrame b = new JFrame();
        b.setDefaultLookAndFeelDecorated(true);
        b.setContentPane(gui);
        b.setBounds(50, 50, 800, 600);
        b.show();       
       
    }
   
}
Avatar billede jarret Nybegynder
25. april 2005 - 14:03 #3
giver det mening
Avatar billede jarret Nybegynder
25. april 2005 - 14:08 #4
public class Butikken{
   
   
    public Butikken(){
   

        JPanel gui = new JPanel();
        JPanel venstre = new JPanel();
        JPanel højre = new JPanel();
       
       
                gui.add(venstre);
        gui.add(højre);
       
        JLabel ht = new JLabel("Højre top");
        JLabel hc = new JLabel("Højre center");
        JLabel hb = new JLabel("Højre bund");
        JLabel vt = new JLabel("Venstre top");
        JLabel vc = new JLabel("Venstre center");
        JLabel vb = new JLabel("Venstre bund");                               
       
       
        JPanel htop= new JPanel();
        htop.add(ht);
       
        JPanel hcenter= new JPanel();
        hcenter.add(hc);
       
        JPanel hbund = new JPanel();       
        hbund.add(hb);
       
        JPanel vtop= new JPanel();
        vtop.add(vt);
       
        JPanel vcenter= new JPanel();
        vcenter.add(vc);
       
        JPanel vbund = new JPanel();
        vbund.add(vb);
       

        højre.setLayout(new GridLayout(3, 1));       
       
        venstre.setLayout(new GridLayout(3, 1));
       
        venstre.add(vtop);
        venstre.add(vcenter);
        venstre.add(vbund);
       
               
        højre.add(htop);
        højre.add(hcenter);
        højre.add(hbund);   
               

       

               
        JFrame b = new JFrame();
        b.setDefaultLookAndFeelDecorated(true);
        b.setContentPane(gui);
        b.setBounds(50, 50, 400, 400);
        b.show();
        //b.pack();       
       
    }
   
}

lille rettelse- er det er god måde at sætte op på?
Avatar billede arne_v Ekspert
25. april 2005 - 14:14 #5
Normalt så lader man sin egen klasse extende JFrame.

Jeg kan heller ikke se layout manager på JFrame'en.

Men ellers er det sådan man gør. Man laver nogle JPanels og sætter
nogle passende layout managers på.
Avatar billede jarret Nybegynder
25. april 2005 - 14:48 #6
hvad får jeg egentligt ud af at extende jeg har jo importeret klassen og dertilhørende metoder?
Avatar billede stephanryer Nybegynder
25. april 2005 - 15:36 #7
Du får nedarvede metoder.

Hvis du bruger Eclipser så kan jeg anbefale dig at få fat i et plugin der hedder Visual Editor. Det tager sig af kodning af GUI's.
Avatar billede stephanryer Nybegynder
25. april 2005 - 15:36 #8
Eclipse*
Avatar billede jarret Nybegynder
25. april 2005 - 15:55 #9
jeg bruger jcreator har prøvet elipse(kort)
men kunne ikke få den til at compile og execute
Avatar billede arne_v Ekspert
25. april 2005 - 16:01 #10
Har JCreator en GUI builder så du kan drop and dragge komponenter ind ?
Avatar billede arne_v Ekspert
25. april 2005 - 16:03 #11
Objektivt er eneste fordel ved at extende fremfor aggregate JFRame vel at man
kan override metoder (og bruge protected metoder, men det er vist ikke relevant).

Og man kan sikkert godt lare sig uden den mulighed.

Men så godt som alle eksempler på nettet bruget extend og derfor er man
altså bedre stillet med det.

GUI buildere laver også extend JFrame klasser.
Avatar billede jarret Nybegynder
25. april 2005 - 16:18 #12
ok,
er det virkeligt ikke muligt at lave et "linieskift" i java skal jeg bruge grid hvis jeg bare vil have to elementer oven på hinanden?

(svar med "svar" så giver jeg nogle p)
Avatar billede jarret Nybegynder
25. april 2005 - 16:19 #13
jeg tror ikke jcreator har en dragge-dropper
Avatar billede arne_v Ekspert
25. april 2005 - 16:23 #14
Placeringen af komponenter styres med layout manager.

Du kan lave linie skift i indholdet af et JTextArea med "\r\n".
Avatar billede arne_v Ekspert
25. april 2005 - 16:23 #15
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