Avatar billede motyl Nybegynder
27. november 2004 - 17:16 Der er 7 kommentarer

GridLayout og rækkernes højde

Hej Eksperter.

Jeg har bygget et GUI op vha. GridLayout(4, 1, 0, 0). Er der nogen af jer der ved hvordan jeg kan bestemme højden for 3 række i layoutet? ...er det i det hele taget muligt at gøre med GridLayout?
Avatar billede mikkelbm Nybegynder
27. november 2004 - 17:22 #1
Du kan godt bestemme højden på de komponenter du har i dit GridLayout, men den vil være ens for allesammen. Alle vil ha' samme størrelse som den største komponent.

Hvis du vil ha' en bestemt højde på eksempelvis et JPanel i dit layout, er det bare at sætte: panel.setPreferredSize
Avatar billede motyl Nybegynder
27. november 2004 - 17:33 #2
Det er ikke så smart at alle rækkerne har samme højde. Jeg har to toolbars i de to første rækker, hvorefte jeg har en stor tabel i 3. række. Række 1,2 og 4 skal helst være så smalle som muligt, mens tabellens række skal fylde det meste.

Kan man skrive sådan her hvis den skal være 100 px høj: gridPanel.setPreferredSize(40)
Avatar billede mikkelbm Nybegynder
27. november 2004 - 17:38 #3
Hvis komponenterne skal ha' variable højder, skal du måske kigge på:

http://java.sun.com/docs/books/tutorial/uiswing/layout/gridbag.html

Det skulle være smart.

Der er også andre måder at gøre det på. Du kan samle det i flere forskellige paneler og bruge BorderLayout, hvor du så kan bestemme om indholdet skal være i North, South, East, West.
Avatar billede motyl Nybegynder
27. november 2004 - 18:04 #4
Ah, det ligner noget jeg kan bruge. Tror du  godt at jeg kan smide paneler (JPanel) ind i et GridBagLayout?
Avatar billede motyl Nybegynder
27. november 2004 - 19:11 #5
Nu har jeg leget lidt med denne GridBagLayout, men alle panelerne ligger mega rodet. Desuden kan de ikke ses før man tilfældigt klikker på dem i vinduet.

Ved du evt. hvad det kan være årsagen til denne uorden?

- - - - - - - - - - -

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

class mainGUI extends JFrame implements Constants {
   
    private JToolBar toolbar = new JToolBar();
    private JPanel bundPanel = new JPanel();
    private JPanel gridPanel = new JPanel();
    private JPanel tabPanel = new JPanel();
   
    private Container guiContainer;
    private Controller createTabel = new Controller();
    private ButtonListener theButtonListener = new ButtonListener();
    private ansatDialog nytAnsatDialog = new ansatDialog(this);

    //Opsætning af GUI - kalder alle panelerne
    public void windowLayout() {
        setTitle("Vagtplan version 0.1");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        guiContainer = getContentPane();
       
        createToolbar();
        tabBar();
        matrixVagt();
        createAkt();

        guiContainer.setLayout(new GridBagLayout());
        layoutGUI();

        nytAnsatDialog.setLocation(dialogX, dialogY);
        setResizable(false);
    }
   
    //    Opsætning af toolPanel
    private void createToolbar() {
        toolbar.setFloatable(false);
        JLabel aarLabel = new JLabel(" År: ");
        JLabel maanedLabel = new JLabel(" Måned: ");
        JLabel ugeLabel = new JLabel(" Uge: ");

        Object[] valuesAar =
            new Object[] { "2001", "2002", "2003", "2004", "2005" };

        Object[] valuesMaaned =
            new Object[] {
                "Januar",
                "Februar",
                "Marts",
                "April",
                "Maj",
                "Juni",
                "Juli",
                "August",
                "September",
                "Oktober",
                "November",
                "December" };

        JComboBox aar = new JComboBox(valuesAar);
        JComboBox maaned = new JComboBox(valuesMaaned);
        JComboBox uge = new JComboBox();
        for (int i = 1; i <= 52; i++) {
            uge.addItem(new String("" + i));
        }
        JButton setUge = new JButton("Vis uge");
        JButton nyAnsat = new JButton("Ny ansat");


        toolbar.add(aarLabel);
        toolbar.add(aar);
        toolbar.add(maanedLabel);
        toolbar.add(maaned);
        toolbar.add(ugeLabel);
        toolbar.add(uge);
        toolbar.add(setUge);
        toolbar.add(nyAnsat);
    }

    private void tabBar() {
        JButton prevWeek = new JButton("Forrige uge", iconPrevWeek);
        JLabel selectWeek = new JLabel("  Vælg uge til visning  ");
        JButton nextWeek = new JButton("Næste uge");

        tabPanel.add(prevWeek);
        tabPanel.add(selectWeek);
        tabPanel.add(nextWeek);

    }

    //Her skal matrixen til vagtplanen laves
    private void matrixVagt() {
        JTable vagtTabel = new JTable(celler, columnNames);
        Font defaultFont = vagtTabel.getFont();
        Font newFont =
            new Font("Verdana", defaultFont.getStyle(), defaultFont.getSize());
        vagtTabel.setFont(newFont);
        vagtTabel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        gridPanel.add(new JScrollPane(vagtTabel));
   
    }

    //    Opsætning af bundPanel
    private void createAkt() {
        JButton nyAktivitet = new JButton("Ny aktivitet", iconNyAkt);
        bundPanel.add(nyAktivitet);
    }

    private void layoutGUI() {
        GridBagConstraints c = new GridBagConstraints();
        c.insets = new Insets(5, 5, 5, 5);
               
        c.weightx = 0.5;
        c.gridx = 0;
        c.gridy = 0;
        c.gridwidth = 0;
        c.gridheight = 0;
        c.fill = GridBagConstraints.NONE;
   
        guiContainer.add(toolbar, c);
       
        c.weightx = 0.5;
        c.gridx = 0;
        c.gridy = 1;
        c.gridwidth = 0;
        c.gridheight = 0;
        c.fill = GridBagConstraints.NONE;
        guiContainer.add(tabPanel, c);
       
        c.weightx = 0.5;
        c.gridx = 0;
        c.gridy = 2;
        c.gridwidth = 0;
        c.gridheight = 0;
        c.fill = GridBagConstraints.NONE;
        c.anchor = GridBagConstraints.WEST;
        guiContainer.add(gridPanel, c);
       
        c.weightx = 0.5;
        c.gridx = 0;
        c.gridy = 3;
        c.gridwidth = 0;
        c.gridheight = 0;
        c.fill = GridBagConstraints.NONE;
        guiContainer.add(bundPanel, c);
    }

    public static void main(String[] args) {
        mainGUI window = new mainGUI();
        window.windowLayout();
        window.setSize(800, 600);
        window.setVisible(true);
    }

}
Avatar billede motyl Nybegynder
27. november 2004 - 19:12 #6
Det skal siges at alle panelerne skal ligge i hver sin række!
Avatar billede motyl Nybegynder
27. november 2004 - 19:39 #7
Er der mon nogen der kan hjælpe?
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