Positioneren JList en JButtons met GridBagLayout in Java

Plaats reactie
Gebruikersavatar
bke
Elite Poster
Elite Poster
Berichten: 1008
Lid geworden op: 22 apr 2004, 20:41
Uitgedeelde bedankjes: 5 keer
Bedankt: 6 keer

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);
Bijlagen
2.jpg
(12.31 KiB) 1708 keer gedownload
1.jpg
(8.63 KiB) 1709 keer gedownload
Ares: (CPU) AMD Ryzen 1800x (RAM) 16GB DDR4 (HDD) Samsung Spinpoint F1 1TB (SSD) Samsung 970 EVO 250 GB (VGA) NVidia GeForce 1050 Ti 4GB (OS) Windows 10 Pro
Apollo: (CPU) AMD FX 8300 (RAM) 8GB DDR3 (HDD) Samsung Spinpoint F1 1TB (SSD) Samsung 850 EVO 256GB (VGA) AMD Radeon HD 5850 (OS) Windows 10 Pro
Astralon
Elite Poster
Elite Poster
Berichten: 3310
Lid geworden op: 26 jul 2005, 12:17
Locatie: Lochristi
Uitgedeelde bedankjes: 196 keer
Bedankt: 125 keer

Moet je niet iets doen als:

Code: Selecteer alles

pane.setLayout(new GridBagLayout());
Want in je voorbeeld zie ik helemaal geen GridBagLayout class?
Gebruikersavatar
bke
Elite Poster
Elite Poster
Berichten: 1008
Lid geworden op: 22 apr 2004, 20:41
Uitgedeelde bedankjes: 5 keer
Bedankt: 6 keer

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.
Ares: (CPU) AMD Ryzen 1800x (RAM) 16GB DDR4 (HDD) Samsung Spinpoint F1 1TB (SSD) Samsung 970 EVO 250 GB (VGA) NVidia GeForce 1050 Ti 4GB (OS) Windows 10 Pro
Apollo: (CPU) AMD FX 8300 (RAM) 8GB DDR3 (HDD) Samsung Spinpoint F1 1TB (SSD) Samsung 850 EVO 256GB (VGA) AMD Radeon HD 5850 (OS) Windows 10 Pro
Gebruikersavatar
Kemblin
Pro Member
Pro Member
Berichten: 411
Lid geworden op: 18 okt 2003, 16:47
Locatie: Schoten (Antwerpen)
Bedankt: 2 keer

moet ge niet bij uw list zetten

Code: Selecteer alles

c.gridwidth = 1;
c.gridheight = 5;
Gebruikersavatar
bke
Elite Poster
Elite Poster
Berichten: 1008
Lid geworden op: 22 apr 2004, 20:41
Uitgedeelde bedankjes: 5 keer
Bedankt: 6 keer

Heb alle Constraints gedaan maar het lukte maar niet. Door de knoppen in een JPanel te steken was het instantlyt opgelost!
Ares: (CPU) AMD Ryzen 1800x (RAM) 16GB DDR4 (HDD) Samsung Spinpoint F1 1TB (SSD) Samsung 970 EVO 250 GB (VGA) NVidia GeForce 1050 Ti 4GB (OS) Windows 10 Pro
Apollo: (CPU) AMD FX 8300 (RAM) 8GB DDR3 (HDD) Samsung Spinpoint F1 1TB (SSD) Samsung 850 EVO 256GB (VGA) AMD Radeon HD 5850 (OS) Windows 10 Pro
Plaats reactie

Terug naar “Development”