0

Okey, so i get a problem with my GUI. i get this error i have never gotten before when doing the exact same thing. I'm even using old code. and I'm doing an exam so I'm even more stressed since i don't understand the problem.

main: http://pastebin.com/Py9S6nd3

import javax.swing.JFrame;

public class Jonth_SwingTenta {

    private static void createAndShowGui() {
        //Skapar ett fönster där gui komponenter läggs.
        JFrame frame = new JFrame("ToDo");
        //Anger vad som ska hända om fönstret stängs, i detta fall avslutas fönstret när man trycker på X.
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //Skapar ett objekt av klassen FormularPanel (privat lyssnarklass)
        //GridBagPanel panel = new GridBagPanel(); 
        PanelGUI panel = new PanelGUI();
//        frame.setJMenuBar(panel2.getMenu());
        //Lägger på panelen på frame.
        frame.getContentPane().add(panel);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGui();
            }
        });
    }
}

gui: http://pastebin.com/TYFG1XdU

import java.awt.*;
import javax.swing.*;
import javax.xml.bind.Marshaller.Listener;

/**
 *
 * @author h12mjont
 */
public class PanelGUI extends JPanel {

    private JPanel panel;
    private GridBagConstraints c;
    private GridBagLayout gridBag;
    private JLabel variID, varuNamn, varuKat;
    private JTextField textField1, textField2;
    private JTextArea textArea1;
    private JButton laggTill, taBort, uppdatera, sokPaID, sokKat;
    private Listener listener;
    private DAOFactory daofactory;
    private DAOInterface dao;
    private JComboBox markeBox;
    String[] marken = {"Frukt", "Mejeri", "Kött"};

    public PanelGUI() {

        panel = new JPanel(); //Skapar en ny panel där alla komponeneter ska finnas.
        gridBag = new GridBagLayout(); //Skapar en gridbaglayout
        c = new GridBagConstraints(); //Skapar constraints.
        panel.setLayout(gridBag); //Sätter layouten.
        //----------------col 1-----------------------------------
        variID = new JLabel("Varu ID");
        laggTillGUIGridBag(variID, 0, 0, 1, 1);
        varuNamn = new JLabel("Varunamn");
        laggTillGUIGridBag(varuNamn, 1, 0, 1, 1);
        varuKat = new JLabel("Varukategori");
        laggTillGUIGridBag(varuKat, 2, 0, 1, 1);
        laggTill = new JButton("Lägg till");
        laggTillGUIGridBag(laggTill, 3, 0, 1, 1);
        uppdatera = new JButton("Uppdatera");
        laggTillGUIGridBag(uppdatera, 4, 0, 1, 1);
        sokKat = new JButton("Sök på Kategori");
        laggTillGUIGridBag(sokKat, 5, 0, 2, 1);
        //-----------------col 2--------------------------------
        textField1 = new JTextField();
        textField1.setPreferredSize(new Dimension(70, 20));
        laggTillGUIGridBag(textField1, 0, 1, 2, 1);
        textField2 = new JTextField();
        textField2.setPreferredSize(new Dimension(70, 20));
        laggTillGUIGridBag(textField2, 1, 1, 2, 1);
        markeBox = new JComboBox();
        markeBox.setModel(new DefaultComboBoxModel(marken));
        // markeBox.addItemListener(combolyssnare);
        markeBox.setPreferredSize(new Dimension(70, 20));
        laggTillGUIGridBag(markeBox, 2, 1, 1, 1);
        taBort = new JButton("Ta bort");
        laggTillGUIGridBag(taBort, 3, 1, 1, 1);
        sokPaID = new JButton("Sök på id");
        laggTillGUIGridBag(sokPaID, 4, 1, 1, 1);
        //-------------------col 3--------------------------------
        textArea1 = new JTextArea();
        textArea1.setPreferredSize(new Dimension(350, 100));
        textArea1.setMinimumSize(new Dimension(350, 100));
        laggTillGUIGridBag(textArea1, 0, 3, 2, 2);
        //----------------Slut på GUI ----------------------------
        add(panel);
    }

    private void laggTillGUIGridBag(Component guiKomponent, int rad, int kolumn, int bredd, int hojd) {
        c.fill = GridBagConstraints.BOTH; //Gör så komponenten fyller ut sig i storlek åt båda håll.
        c.gridx = kolumn;
        c.gridy = rad;
        c.gridwidth = bredd;
        c.gridheight = hojd;
        c.insets = new Insets(5, 5, 5, 5); //Sätter padding runt komponenten
        gridBag.setConstraints(guiKomponent, c);
        panel.add(guiKomponent, c);
    }
}

i don't understand what the problem is. sorry it is in Swedish though, but you can still understand what I'm doing with it.

Thanks for any help possible!

mKorbel
  • 109,525
  • 20
  • 134
  • 319

1 Answers1

1

Looks OK without all the setPreferredSize() calls, which should be avoided.

image

import java.awt.Component;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.xml.bind.Marshaller.Listener;

public class Jonth_SwingTenta {

    private static void createAndShowGui() {
        JFrame frame = new JFrame("ToDo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        PanelGUI panel = new PanelGUI();
        frame.add(panel);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                createAndShowGui();
            }
        });
    }

    private static class PanelGUI extends JPanel {

        private JPanel panel;
        private GridBagConstraints c;
        private GridBagLayout gridBag;
        private JLabel variID, varuNamn, varuKat;
        private JTextField textField1, textField2;
        private JTextArea textArea1;
        private JButton laggTill, taBort, uppdatera, sokPaID, sokKat;
        private Listener listener;
        private JComboBox markeBox;
        String[] marken = {"Frukt", "Mejeri", "Kött"};

        public PanelGUI() {

            panel = new JPanel();
            gridBag = new GridBagLayout();
            c = new GridBagConstraints();
            panel.setLayout(gridBag);
            //----------------col 1-----------------------------------
            variID = new JLabel("Varu ID");
            laggTillGUIGridBag(variID, 0, 0, 1, 1);
            varuNamn = new JLabel("Varunamn");
            laggTillGUIGridBag(varuNamn, 1, 0, 1, 1);
            varuKat = new JLabel("Varukategori");
            laggTillGUIGridBag(varuKat, 2, 0, 1, 1);
            laggTill = new JButton("Lägg till");
            laggTillGUIGridBag(laggTill, 3, 0, 1, 1);
            uppdatera = new JButton("Uppdatera");
            laggTillGUIGridBag(uppdatera, 4, 0, 1, 1);
            sokKat = new JButton("Sök på Kategori");
            laggTillGUIGridBag(sokKat, 5, 0, 2, 1);
            //-----------------col 2--------------------------------
            textField1 = new JTextField();
            laggTillGUIGridBag(textField1, 0, 1, 2, 1);
            textField2 = new JTextField();
            laggTillGUIGridBag(textField2, 1, 1, 2, 1);
            markeBox = new JComboBox();
            markeBox.setModel(new DefaultComboBoxModel(marken));
            // markeBox.addItemListener(combolyssnare);
            laggTillGUIGridBag(markeBox, 2, 1, 1, 1);
            taBort = new JButton("Ta bort");
            laggTillGUIGridBag(taBort, 3, 1, 1, 1);
            sokPaID = new JButton("Sök på id");
            laggTillGUIGridBag(sokPaID, 4, 1, 1, 1);
            //-------------------col 3--------------------------------
            textArea1 = new JTextArea();
            laggTillGUIGridBag(textArea1, 0, 3, 2, 2);
            //----------------Slut på GUI ----------------------------
            add(panel);
        }

        private void laggTillGUIGridBag(Component guiKomponent,
                int rad, int kolumn, int bredd, int hojd) {
            c.fill = GridBagConstraints.BOTH;
            c.gridx = kolumn;
            c.gridy = rad;
            c.gridwidth = bredd;
            c.gridheight = hojd;
            c.insets = new Insets(5, 5, 5, 5);
            gridBag.setConstraints(guiKomponent, c);
            panel.add(guiKomponent, c);
        }
    }
}
Community
  • 1
  • 1
trashgod
  • 203,806
  • 29
  • 246
  • 1,045
  • wow you got it to work? but i have used setPreferredSize() calls before? im just using old code and now its not working?:s – user2064844 Apr 13 '13 at 11:01
  • [Misuse](http://stackoverflow.com/q/7229226/230513) of `setPreferredSize()`, although important, isn't causing your problem. It may be an artifact of your build environment. Can you run the [sscce](http://sscce.org/) I posted above? – trashgod Apr 13 '13 at 11:06
  • yes i can run it, though i don't know if im allowed to do it in the main class. because that's how how we do it in class, though i don't know, thanks anyways! – user2064844 Apr 13 '13 at 11:13
  • I nested `PanelGUI` for convenience, but you can factor it back out. – trashgod Apr 13 '13 at 13:50