Avatar billede touel Nybegynder
12. september 2008 - 00:57 Der er 7 kommentarer og
1 løsning

Kan ikk få GUI til at virke

I følgende kode prøver jeg at fremvise JTextField(s). Det eneste der kommer frem er vinduet.
Hvad mangler jeg ?

public class IterationGUI extends JPanel {
   
    public JFrame frame;
    public JPanel p1;
    public JTextField felt1,felt2,felt3,felt4,felt5,felt6,felt7,felt8,felt9,felt10,felt11,felt12,felt13,felt14,felt15,
    felt16,felt17,felt18,felt19,felt20,felt21,felt22,felt23,felt24,felt25,felt26,felt27,felt28,felt29,felt30,felt31;
    public JTextArea output;
   
    /*public IterationGUI(){
        frame = new JFrame("Prove");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }*/
   
    public void makeGUI(){
       
        frame = new JFrame("Prove");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new BorderLayout());
       
        p1 = new JPanel();
       
        //Opret objekt og placer dem i BorderLayout.
        p1.add(new JTextField (10));
       
        felt1 = new JTextField (5);p1.add(felt1,BorderLayout.WEST);
        felt2 = new JTextField (5);p1.add(felt2,BorderLayout.WEST);
        felt3 = new JTextField (5);p1.add(felt3,BorderLayout.WEST);
        felt4 = new JTextField (5);p1.add(felt4,BorderLayout.WEST);
        felt5 = new JTextField (5);p1.add(felt5,BorderLayout.WEST);
        felt6 = new JTextField (5);p1.add(felt6,BorderLayout.WEST);
        felt7 = new JTextField (5);p1.add(felt7,BorderLayout.WEST);
        felt8 = new JTextField (5);p1.add(felt8,BorderLayout.WEST);
        felt9 = new JTextField (5);p1.add(felt9,BorderLayout.WEST);
        felt10 = new JTextField (5);p1.add(felt10,BorderLayout.WEST);
        felt11 = new JTextField (5);p1.add(felt11,BorderLayout.CENTER);
        felt12 = new JTextField (5);p1.add(felt12,BorderLayout.CENTER);
        felt13 = new JTextField (5);p1.add(felt13,BorderLayout.CENTER);
        felt14 = new JTextField (5);p1.add(felt14,BorderLayout.CENTER);
        felt15 = new JTextField (5);p1.add(felt15,BorderLayout.CENTER);
        felt16 = new JTextField (5);p1.add(felt16,BorderLayout.CENTER);
        felt17 = new JTextField (5);p1.add(felt17,BorderLayout.CENTER);
        felt18 = new JTextField (5);p1.add(felt18,BorderLayout.CENTER);
        felt19 = new JTextField (5);p1.add(felt19,BorderLayout.CENTER);
        felt20 = new JTextField (5);p1.add(felt20,BorderLayout.SOUTH);
        felt21 = new JTextField (5);p1.add(felt21,BorderLayout.SOUTH);
        felt22 = new JTextField (5);p1.add(felt22,BorderLayout.SOUTH);
        felt23 = new JTextField (5);p1.add(felt23,BorderLayout.SOUTH);
        felt24 = new JTextField (5);p1.add(felt24,BorderLayout.SOUTH);
        felt25 = new JTextField (5);p1.add(felt25,BorderLayout.SOUTH);
        felt26 = new JTextField (5);p1.add(felt26,BorderLayout.SOUTH);
        felt27 = new JTextField (5);p1.add(felt27,BorderLayout.SOUTH);
        felt28 = new JTextField (5);p1.add(felt28,BorderLayout.SOUTH);
        felt29 = new JTextField (5);p1.add(felt29,BorderLayout.SOUTH);
        felt30 = new JTextField (5);p1.add(felt30,BorderLayout.SOUTH);
        felt31 = new JTextField (5);p1.add(felt31,BorderLayout.SOUTH);
        output = new JTextArea ();p1.add(output,BorderLayout.NORTH);
       
       
       
        frame.setSize(700, 700);
        frame.setVisible(true);
    }
   
   
   
   
    public static void main(String [] args){
       
        javax.swing.SwingUtilities.invokeLater(new Runnable()
                {
                    public void run()
                    {
                        IterationGUI gui = new IterationGUI ();
                        gui.makeGUI();
                    }
                });
           
    }
   

}
Avatar billede touel Nybegynder
12. september 2008 - 05:25 #1
problem solved... manglede dæleme at tilføje p1 til frame
Avatar billede touel Nybegynder
12. september 2008 - 23:15 #2
gav ikk mig selv point i tilfælde jeg skulle gå i stå igen.. og det er jeg

Når jeg kører følgende kode, åbnes et vindue med store kasser i stedet for alle de små, som jeg vil have. ved ikk hvorfor kasserne "udvider" sig så meget.

Hvad skal der gøres for at skrive enkelte JTextField ud ?

import java.awt.*;

import javax.swing.*;

public class IterationGUI extends JFrame {
   
    public JFrame frame;
    public JPanel p1;
    public JTextField felt1,felt2,felt3,felt4,felt5,felt6,felt7,felt8,felt9,felt10,felt11,felt12,felt13,felt14,felt15,
    felt16,felt17,felt18,felt19,felt20,felt21,felt22,felt23,felt24,felt25,felt26,felt27,felt28,felt29,felt30,felt31;
    public JTextArea output;
   
       
    public void makeGUI(){
       
        frame = new JFrame("Prove");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
        p1 = new JPanel();
        frame.add(p1);
       
        p1.setLayout(new BorderLayout(2,5));
        //Opret objekt og placer dem i BorderLayout.

        output = new JTextArea ();p1.add(output,BorderLayout.NORTH);
        felt1 = new JTextField (5);p1.add(felt1,BorderLayout.WEST);
        felt2 = new JTextField (10);p1.add(felt2,BorderLayout.WEST);
        felt3 = new JTextField (10);p1.add(felt3,BorderLayout.WEST);
        felt4 = new JTextField (10);p1.add(felt4,BorderLayout.WEST);
        felt5 = new JTextField (10);p1.add(felt5,BorderLayout.WEST);
        felt6 = new JTextField (10);p1.add(felt6,BorderLayout.WEST);
        felt7 = new JTextField (10);p1.add(felt7,BorderLayout.WEST);
        felt8 = new JTextField (10);p1.add(felt8,BorderLayout.WEST);
        felt9 = new JTextField (10);p1.add(felt9,BorderLayout.WEST);
        felt10 = new JTextField (10);p1.add(felt10,BorderLayout.WEST);
        felt11 = new JTextField (10);p1.add(felt11,BorderLayout.CENTER);
        felt12 = new JTextField (10);p1.add(felt12,BorderLayout.CENTER);
        felt13 = new JTextField (10);p1.add(felt13,BorderLayout.CENTER);
        felt14 = new JTextField (10);p1.add(felt14,BorderLayout.CENTER);
        felt15 = new JTextField (10);p1.add(felt15,BorderLayout.CENTER);
        felt16 = new JTextField (10);p1.add(felt16,BorderLayout.CENTER);
        felt17 = new JTextField (10);p1.add(felt17,BorderLayout.CENTER);
        felt18 = new JTextField (10);p1.add(felt18,BorderLayout.CENTER);
        felt19 = new JTextField (10);p1.add(felt19,BorderLayout.CENTER);
        felt20 = new JTextField (10);p1.add(felt20,BorderLayout.EAST);
        felt21 = new JTextField (10);p1.add(felt21,BorderLayout.EAST);
        felt22 = new JTextField (10);p1.add(felt22,BorderLayout.EAST);
        felt23 = new JTextField (10);p1.add(felt23,BorderLayout.EAST);
        felt24 = new JTextField (10);p1.add(felt24,BorderLayout.EAST);
        felt25 = new JTextField (10);p1.add(felt25,BorderLayout.EAST);
        felt26 = new JTextField (10);p1.add(felt26,BorderLayout.EAST);
        felt27 = new JTextField (10);p1.add(felt27,BorderLayout.EAST);
        felt28 = new JTextField (10);p1.add(felt28,BorderLayout.EAST);
        felt29 = new JTextField (10);p1.add(felt29,BorderLayout.EAST);
        felt30 = new JTextField (10);p1.add(felt30,BorderLayout.EAST);
        felt31 = new JTextField (10);p1.add(felt31,BorderLayout.EAST);
       
        frame.setSize(700, 700);
        frame.setVisible(true);
    }
   
   
    public static void main(String [] args){
       
        javax.swing.SwingUtilities.invokeLater(new Runnable()
                {
                    public void run()
                    {
                        IterationGUI gui = new IterationGUI ();
                        gui.makeGUI();
                    }
                });
           
    }
   

}
Avatar billede arne_v Ekspert
13. september 2008 - 19:35 #3
Jeg er ikke sikker paa at jeg har forstaaet dit problem, men du gemmer ihvertfald flere
components paa samme position.

Muligvis kan du blive lidt inspireret af denne kode:

import java.awt.*;

import javax.swing.*;

public class IterationGUI extends JFrame {
    private JPanel p1,p2,p3;
    private JTextArea output;
    public JTextField[] felt = new JTextField[30];
    public IterationGUI(){
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setLayout(new BorderLayout(2,5));
        output = new JTextArea();
        getContentPane().add(output, BorderLayout.NORTH);
        p1 = new JPanel();
        p1.setLayout(new GridLayout(10,2));
        getContentPane().add(p1, BorderLayout.WEST);
        p2 = new JPanel();
        p2.setLayout(new GridLayout(10,2));
        getContentPane().add(p2, BorderLayout.CENTER);
        p3 = new JPanel();
        p3.setLayout(new GridLayout(10,2));
        getContentPane().add(p3, BorderLayout.EAST);
        for(int i = 0; i < 10; i++) {
            felt[i] = new JTextField(10);
            p1.add(new JLabel("felt" + i + ": "));
            p1.add(felt[i]);
        }
        for(int i = 10; i < 20; i++) {
            felt[i] = new JTextField(10);
            p2.add(new JLabel("felt" + i + ": "));
            p2.add(felt[i]);
        }
        for(int i = 20; i < 30; i++) {
            felt[i] = new JTextField(10);
            p3.add(new JLabel("felt" + i + ": "));
            p3.add(felt[i]);
        }
        pack();
    }
    public static void main(String [] args){
        SwingUtilities.invokeLater(new Runnable()
                {
                    public void run()
                    {
                        IterationGUI gui = new IterationGUI ();
                        gui.setVisible(true);
                    }
                });
         
    }
}
Avatar billede touel Nybegynder
14. september 2008 - 17:48 #4
Når man ser din kode igennem ser den rigtig ud, men hvis man kører den, tilføjer den heller ikke JTextFields til JFrame, dvs man får en blank vindue. jeg har i dit eks tilføjet setSize(700,700) i main - funk
Avatar billede arne_v Ekspert
14. september 2008 - 17:58 #5
Det er korrekt. Jeg tilfoejer JTextField's til JPanel og ikke til JFrame.

Og det er der gode grunde til.

JFrame har BorderLayout d.v.s. at der kan klaskes 5 komponenter paa den.

Du vil jo have et meget stoerre antal JTextField's - derfor smider jeg 3 JPanel's
paa Jframe, giver de JPanel's et GridLayout med plads til 20 komponenter og
smider saa 10 JLabels + 10 JTextField's paa hver af dem.

Jeg mener at det er maaden du skal styre dit layout paa.
Avatar billede touel Nybegynder
14. september 2008 - 18:29 #6
jeg kan godt se essensen i det kode du viser, men jeg vil VÆLDIG gerne have nogle textfields fremvist i vinduet, så jeg kan komme videre med arbejdet.... og det kan jeg stadig ikke med det eks du viser...

Hvad mangler der ?
Avatar billede touel Nybegynder
14. september 2008 - 18:32 #7
så funger det... smid svar tak...

tak

tak

tak

:0)
Avatar billede arne_v Ekspert
14. september 2008 - 18:35 #8
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