Pagina 1 van 1

Positioneren JList en JButtons met GridBagLayout in Java

Geplaatst: 11 aug 2010, 22:41
door bke
Goeie avond,

Ik heb mijn eerste jaar toegepaste informatica-afstudeerrichting software management achter de rug. In deze opleiding heb ik enkele basisprincipes van het OOP in Java geleerd. Nu ben ik zelf in de vakantie het een en ander aan het uitzoeken rond de GUI, waar we nog niets over geleerd hebben. Na veel prutswerk heb ik gekozen voor een GridBagLayout omdat deze zeer veel mogelijkheden biedt. Hetgeen ik wil is zeer simpel: links een JList en rechts daarvan 5 knoppen onder elkaar, die samen de grootte van de JList innemen. Bij de bijlagen vindt u een screenshot ter verduidelijking. Om de een of andere reden slaag ik er niet in om dit te verwezenlijken. De knoppen zijn goed van grootte maar staan

1. aan de verkeerde kant (links ipv rechts)
en
2. slechts 1 knop staat naast de JList, en dan nog gecentreerd..

De code:

Code: Selecteer alles

        
        list = new JList(listModel);
        list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        list.setFixedCellWidth(125);
        c.weightx = 1;
        c.weighty = 1;
        c.gridwidth = 2;
        c.gridx = 0;
        c.gridy = 0;
        c.weighty = 2;
	getContentPane().add(list, c);

        addButton = new JButton("Add");
        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridx = 1;
        c.gridy = 0;
        c.gridwidth = 1;
        c.weighty = 1;
	getContentPane().add(addButton, c);

        viewButton = new JButton("View");
        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridx = 1;
        c.gridy = 1;
        c.gridwidth = 1;
        c.weighty = 1;
	getContentPane().add(viewButton, c);

        editButton = new JButton("Edit");
        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridx = 1;
        c.gridy = 2;
        c.gridwidth = 1;
        c.weighty = 1;
	getContentPane().add(editButton, c);

        scrollPane.setViewportView(list);
        getContentPane().add(scrollPane);

        exitButton = new JButton("Exit");
        exitButton.addActionListener(
                new java.awt.event.ActionListener() {
                    public void actionPerformed(java.awt.event.ActionEvent evt) {
                        System.exit(0);
                    }
                }
        );
        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridx = 1;
        c.gridy = 3;
        c.gridwidth = 1;
        c.weighty = 1;
        getContentPane().add(exitButton, c);
        
        deleteButton = new JButton("Delete");
        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridx = 1;
        c.gridy = 4;
        c.gridwidth = 1;
        c.weighty = 1;
        getContentPane().add(deleteButton, c);

Re: Positioneren JList en JButtons met GridBagLayout in Java

Geplaatst: 12 aug 2010, 08:21
door Astralon
Moet je niet iets doen als:

Code: Selecteer alles

pane.setLayout(new GridBagLayout());
Want in je voorbeeld zie ik helemaal geen GridBagLayout class?

Re: Positioneren JList en JButtons met GridBagLayout in Java

Geplaatst: 12 aug 2010, 12:35
door bke
Dit heb ik gedaan en op de juiste manier want de GridBagLayout werkt goed, uitgenomen dat ik niet vind hoe ik de knoppen mooi naast de JList krijg. Als ik denk volgens GridBagLayout zou die JList als het ware horizontaal 3 grids moeten zijn en verticaal 5, vergeleken met de buttons.. Maar krijg het niet voor mekaar.

Re: Positioneren JList en JButtons met GridBagLayout in Java

Geplaatst: 12 aug 2010, 13:10
door Kemblin
moet ge niet bij uw list zetten

Code: Selecteer alles

c.gridwidth = 1;
c.gridheight = 5;

Re: Positioneren JList en JButtons met GridBagLayout in Java

Geplaatst: 14 aug 2010, 16:36
door bke
Heb alle Constraints gedaan maar het lukte maar niet. Door de knoppen in een JPanel te steken was het instantlyt opgelost!