🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: be.comp.programming
4 messages
4 total messages Started by Simonne De Ryck Thu, 22 Apr 2004 17:31
[Java] GridBagLayout.
#2578
Author: Simonne De Ryck
Date: Thu, 22 Apr 2004 17:31
93 lines
3999 bytes
Hallo,

Ik heb problemen met het de layout van mijn scherm.
Mijn bedoeling is om bovenaan op het scherm een tabel te maken en onderaan
een knop om het scherm te verlaten.
Het probleem is het volgende: als je de code die hieronder staat uitvoert
zul je merken dat mij dat al redelijk goed gelukt is.  Nu als ik dit scherm
verklein of vergroot is de bedoeling dat de tabel mee vergroot of verkleint
en dit gebeurt niet zoals het hoort.

Ik hoop dat hier iemand is die mij kan helpen met dit probleem.

Alvast bedankt & groetjes
Els

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class SearchClient extends JFrame implements ActionListener {
    public JTable aTable;
    public JScrollPane aScrollPane;
    public static String [][] tableData = {{"Lijn1", "Lijn1", "Lijn1"},
                                                        {"Lijn2", "Lijn2",
"Lijn2"},
                                                        {"Lijn3", "Lijn3",
"Lijn3"}};
    public static String[] columnHeadings = {"Naam", "Adres", "Gemeente"};
    private JButton Exit;
    private JLabel Label1, Label2;

    public SearchClient() {
        // ----- Opbouw scherm -----
        Dimension scrSize= Toolkit.getDefaultToolkit().getScreenSize();
        this.setTitle("Zoeken");
        this.setSize(500, 200);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLocation((scrSize.width - 500)/2, (scrSize.height - 200)/2);
        this.isResizable();

        aTable = new JTable(tableData, columnHeadings);
        aScrollPane = new JScrollPane(aTable);

        Exit = new JButton();
        Exit.setText("Verlaten");
        Exit.addActionListener(this);

        Label1 = new JLabel();
        Label1.setText(" ");
        Label2 = new JLabel();
        Label2.setText(" ");

        GridBagLayout gridbag = new GridBagLayout();
        GridBagConstraints c = new GridBagConstraints();
        getContentPane().setLayout(gridbag);
        c.gridwidth = GridBagConstraints.REMAINDER;
        c.weightx = 0.0;
        c.gridheight = 1;
        gridbag.setConstraints(Label1, c);
        getContentPane().add(Label1);

        c.gridwidth = GridBagConstraints.REMAINDER;
        c.weightx = 0.0;
        c.gridheight = 0;
        gridbag.setConstraints(aTable, c);
        getContentPane().add(aScrollPane);

        c.gridwidth = GridBagConstraints.REMAINDER;
        c.weightx = 0.0;
        c.gridheight = 1;
        gridbag.setConstraints(Label2, c);
        getContentPane().add(Label2);

        c.gridwidth = GridBagConstraints.WEST;
        c.weightx = 1.0;
        gridbag.setConstraints(Exit, c);
        getContentPane().add(Exit);

        pack();
        setVisible(true);
    }

    public static void main(String[] args){
        new SearchClient();
    }

    public void actionPerformed(ActionEvent e){
        if(e.getSource() == Exit){
            System.exit(0);
        }
    }
}
Re: [Java] GridBagLayout.
#2580
Author: Stijn De Smet
Date: Fri, 23 Apr 2004 08:43
28 lines
2065 bytes
Simonne De Ryck wrote:

> Hallo,
> 
> Ik heb problemen met het de layout van mijn scherm.
> Mijn bedoeling is om bovenaan op het scherm een tabel te maken en onderaan
> een knop om het scherm te verlaten.
> Het probleem is het volgende: als je de code die hieronder staat uitvoert
> zul je merken dat mij dat al redelijk goed gelukt is.  Nu als ik dit
> scherm verklein of vergroot is de bedoeling dat de tabel mee vergroot of
> verkleint en dit gebeurt niet zoals het hoort.
> 
> Ik hoop dat hier iemand is die mij kan helpen met dit probleem.
> 
Bij GridBagLayout moet je ook nog fill en weighty instellen.
Je stelt ook de gridbagconstraints in op je aTable, maar voegt aScrollPane
toe aan je contentpane. Dan moet je de constraints ook op die ScrollPane
zetten.
Misschien dat het zo beter werkt:
c.gridwidth�=�GridBagConstraints.REMAINDER;
c.weightx�=�0.0;
c.weighty=1.0
c.fill = GridBagConstraints.BOTH;
c.gridheight�=�0;
gridbag.setConstraints(aScrollPane,�c);
getContentPane().add(aScrollPane);
-- 
Stijn De Smet
Re: [Java] GridBagLayout.
#2582
Author: Simonne De Ryck
Date: Fri, 23 Apr 2004 09:15
27 lines
1868 bytes
"Stijn De Smet" <stijn.desmet@nospammer.pandora.be> schreef in bericht
news:c6aivd$nos$1@gaudi2.UGent.be...


> Bij GridBagLayout moet je ook nog fill en weighty instellen.
> Je stelt ook de gridbagconstraints in op je aTable, maar voegt aScrollPane
> toe aan je contentpane. Dan moet je de constraints ook op die ScrollPane
> zetten.
> Misschien dat het zo beter werkt:
> c.gridwidth = GridBagConstraints.REMAINDER;
> c.weightx = 0.0;
> c.weighty=1.0
> c.fill = GridBagConstraints.BOTH;
> c.gridheight = 0;
> gridbag.setConstraints(aScrollPane, c);
> getContentPane().add(aScrollPane);
> -- 
> Stijn De Smet

Ik heb het geprobeerd met de code die je in je voorbeeld hebt geplaatst.
Dit werkt als ik alleen maar de tabel op mijn scherm zet.  Vanaf het moment
dat ik er een label of knop toevoeg loopt dit mis.  Werkt dit enkel als je
een tabel alleen hebt.

Groetje
Els
Re: [Java] GridBagLayout.
#2584
Author: Stijn De Smet
Date: Fri, 23 Apr 2004 15:50
38 lines
2542 bytes
Simonne De Ryck wrote:

> 
> "Stijn De Smet" <stijn.desmet@nospammer.pandora.be> schreef in bericht
> news:c6aivd$nos$1@gaudi2.UGent.be...
> 
> 
>> Bij GridBagLayout moet je ook nog fill en weighty instellen.
>> Je stelt ook de gridbagconstraints in op je aTable, maar voegt
>> aScrollPane toe aan je contentpane. Dan moet je de constraints ook op die
>> ScrollPane zetten.
>> Misschien dat het zo beter werkt:
>> c.gridwidth = GridBagConstraints.REMAINDER;
>> c.weightx = 0.0;
>> c.weighty=1.0
>> c.fill = GridBagConstraints.BOTH;
>> c.gridheight = 0;
>> gridbag.setConstraints(aScrollPane, c);
>> getContentPane().add(aScrollPane);
>> --
>> Stijn De Smet
> 
> Ik heb het geprobeerd met de code die je in je voorbeeld hebt geplaatst.
> Dit werkt als ik alleen maar de tabel op mijn scherm zet.  Vanaf het
> moment
> dat ik er een label of knop toevoeg loopt dit mis.  Werkt dit enkel als je
> een tabel alleen hebt.
> 
Er zijn nog een aantal andere parameters nodig bij gridbagconstraints.
Je zet er best ook een .gridx en .gridy bij(die geven de positie aan in de
gridbaglayout. Als die er niet staan dan gaat de grootste component meestal
alles overlappen). Je moet ook de gridwidth en gridheight aanpassen als je
het wat deftig wilt positioneren.
Netbeans heeft een visuele GUI editor die oa de gridbaglayout ondersteunt.
Die genereert ook leesbare code en je kan in de GUI-editor met alle
gridbaglayout parameters testen.
-- 
Stijn De Smet
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads