Avatar billede dennism Nybegynder
01. december 2006 - 10:12 Der er 4 kommentarer og
1 løsning

Java: Layout

Jeg er ved at lave et layout, men har lavet denne lille eksempelkode, for at illustrere mit problem:

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

class Main {

    public static void main(String[] args) {
        JFrame frame = new JFrame("Testing layout");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel centerPanel = new JPanel(new BorderLayout());
       
            JPanel centerTopPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
            centerPanel.add(centerTopPanel, BorderLayout.NORTH);

            JPanel centerLeftPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
            centerPanel.add(centerLeftPanel, BorderLayout.WEST);

            JPanel centerCenterPanel = new JPanel();
            centerCenterPanel.setLayout(new BoxLayout(centerCenterPanel, BoxLayout.Y_AXIS));
            centerPanel.add(centerCenterPanel, BorderLayout.CENTER);

            JPanel centerRightPanel = new JPanel(new BorderLayout());
            centerPanel.add(centerRightPanel, BorderLayout.EAST);
       
        //creating centerTop Panel
        centerTopPanel.add(new JLabel("Headline"));
       
        //creating centerLeft Panel
        centerLeftPanel.add(new JLabel("New game:"));
           
        //creating centerCenter panel
        JPanel contentPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
       
        JPanel formPanel = new JPanel(new GridLayout(0,1));
        JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
       
        JLabel competitor1Label = new JLabel("Start 1:");
        competitor1Label.setFont(new Font("Dialog",Font.BOLD,12));
        JComboBox competitor1Box = new JComboBox();
        competitor1Box.addItem("test");
        competitor1Box.addItem("test");
        competitor1Box.addItem("test");
        competitor1Box.setPreferredSize(new Dimension(150,20));
        formPanel.add(competitor1Label);
        formPanel.add(competitor1Box);
       
        JLabel competitor2Label = new JLabel("Start 2:");
        competitor2Label.setFont(new Font("Dialog",Font.BOLD,12));
        JComboBox competitor2Box = new JComboBox();
        competitor2Box.addItem("test");
        competitor2Box.addItem("test");
        competitor2Box.addItem("test");
        competitor2Box.setPreferredSize(new Dimension(150,20));
        formPanel.add(competitor2Label);
        formPanel.add(competitor2Box);
       
        contentPanel.add(formPanel);
        contentPanel.add(buttonPanel);
       
        centerCenterPanel.add(contentPanel);
//        centerCenterPanel.add(formPanel);
//        centerCenterPanel.add(buttonPanel);
       
        //creating right panel
        JLabel headlineRightLabel = new JLabel("Your sales:",JLabel.LEFT);
        centerRightPanel.add(headlineRightLabel,BorderLayout.NORTH);
       
        JList couponList = new JList();
        couponList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        JScrollPane scrollCouponList = new JScrollPane(couponList);
        scrollCouponList.setPreferredSize(new Dimension(250,300));
        JPanel scrollPanel = new JPanel();
        scrollPanel.add(scrollCouponList);
        centerRightPanel.add(scrollPanel,BorderLayout.CENTER);
       
        //creating bottom panel
        JButton createButton = new JButton("Spil");
        buttonPanel.add(createButton);

        frame.add(centerPanel, BorderLayout.CENTER);

        frame.setSize(800,500);
        frame.setLocation(200,200);
        frame.setVisible(true);
    }

}

Som I kan se, så ligger min "spil" knap forkert i layoutet? Det skyldes at mine Panels ligger sig efter hinanden, istedet for at atarte under det andet. Hvordan kan jeg få det flyttet ned under det andet?
Avatar billede winners79 Nybegynder
01. december 2006 - 10:46 #1
import javax.swing.*;
import java.awt.*;

class Grafik {

    public static void main(String[] args) {
        JFrame frame = new JFrame("Testing layout");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel centerPanel = new JPanel(new BorderLayout());
     
            JPanel centerTopPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
            centerPanel.add(centerTopPanel, BorderLayout.NORTH);

            JPanel centerLeftPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
            centerPanel.add(centerLeftPanel, BorderLayout.WEST);

            JPanel centerCenterPanel = new JPanel();
            centerCenterPanel.setLayout(new BoxLayout(centerCenterPanel, BoxLayout.Y_AXIS));
            centerPanel.add(centerCenterPanel, BorderLayout.CENTER);

            JPanel centerRightPanel = new JPanel(new BorderLayout());
            centerPanel.add(centerRightPanel, BorderLayout.EAST);
     
        //creating centerTop Panel
        centerTopPanel.add(new JLabel("Headline"));
     
        //creating centerLeft Panel
        centerLeftPanel.add(new JLabel("New game:"));
         
        //creating centerCenter panel
        JPanel contentPanel = new JPanel(new BorderLayout()); // ændring
     
        JPanel formPanel = new JPanel(new GridLayout(0,1));
        JPanel buttonPanel = new JPanel(); //Ændring
     
        JLabel competitor1Label = new JLabel("Start 1:");
        competitor1Label.setFont(new Font("Dialog",Font.BOLD,12));
        JComboBox competitor1Box = new JComboBox();
        competitor1Box.addItem("test");
        competitor1Box.addItem("test");
        competitor1Box.addItem("test");
        competitor1Box.setPreferredSize(new Dimension(150,20));
        formPanel.add(competitor1Label);
        formPanel.add(competitor1Box);
     
        JLabel competitor2Label = new JLabel("Start 2:");
        competitor2Label.setFont(new Font("Dialog",Font.BOLD,12));
        JComboBox competitor2Box = new JComboBox();
        competitor2Box.addItem("test");
        competitor2Box.addItem("test");
        competitor2Box.addItem("test");
        competitor2Box.setPreferredSize(new Dimension(150,20));
        formPanel.add(competitor2Label);
        formPanel.add(competitor2Box);
     
        contentPanel.add(formPanel, BorderLayout.NORTH);    //Ændring
        contentPanel.add(buttonPanel, BorderLayout.CENTER);  //Ændring
     
        centerCenterPanel.add(contentPanel);
//        centerCenterPanel.add(formPanel);
//        centerCenterPanel.add(buttonPanel);
     
        //creating right panel
        JLabel headlineRightLabel = new JLabel("Your sales:",JLabel.LEFT);
        centerRightPanel.add(headlineRightLabel,BorderLayout.NORTH);
     
        JList couponList = new JList();
        couponList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        JScrollPane scrollCouponList = new JScrollPane(couponList);
        scrollCouponList.setPreferredSize(new Dimension(250,300));
        JPanel scrollPanel = new JPanel();
        scrollPanel.add(scrollCouponList);
        centerRightPanel.add(scrollPanel,BorderLayout.CENTER);
     
        //creating bottom panel
        JButton createButton = new JButton("Spil");
        buttonPanel.add(createButton);

        frame.add(centerPanel, BorderLayout.CENTER);

        frame.setSize(800,500);
        frame.setLocation(200,200);
        frame.setVisible(true);
    }

}
Avatar billede dennism Nybegynder
01. december 2006 - 10:55 #2
Tak for svaret. Der er dog stadig et par problemer:

1) jeg er ikke interesseret i, at de comboBox'es bliver så bredde! De skal bare være de 150px, som jeg har bedt dem om :)
2) Spil-knappen skal gerne være højre-centreret efter de comboBoxes, sådan at den er i højre side.
Avatar billede dennism Nybegynder
01. december 2006 - 11:03 #3
Har fundet en anden måde, som er næsten lige så god:

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

class Main {

    public static void main(String[] args) {
        JFrame frame = new JFrame("Testing layout");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel centerPanel = new JPanel(new BorderLayout());
       
            JPanel centerTopPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
            centerPanel.add(centerTopPanel, BorderLayout.NORTH);

            JPanel centerLeftPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
            centerPanel.add(centerLeftPanel, BorderLayout.WEST);

            JPanel centerCenterPanel = new JPanel();
            centerCenterPanel.setLayout(new BoxLayout(centerCenterPanel, BoxLayout.Y_AXIS));
            centerPanel.add(centerCenterPanel, BorderLayout.CENTER);

            JPanel centerRightPanel = new JPanel(new BorderLayout());
            centerPanel.add(centerRightPanel, BorderLayout.EAST);
       
        //creating centerTop Panel
        centerTopPanel.add(new JLabel("Headline"));
       
        //creating centerLeft Panel
        centerLeftPanel.add(new JLabel("New game:"));
           
        //creating centerCenter panel
        JPanel contentPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
       
        JPanel formPanel = new JPanel(new GridLayout(0,1));
       
        JLabel competitor1Label = new JLabel("Start 1:");
        competitor1Label.setFont(new Font("Dialog",Font.BOLD,12));
        JComboBox competitor1Box = new JComboBox();
        competitor1Box.addItem("test");
        competitor1Box.addItem("test");
        competitor1Box.addItem("test");
        competitor1Box.setPreferredSize(new Dimension(150,20));
        formPanel.add(competitor1Label);
        formPanel.add(competitor1Box);
       
        JLabel competitor2Label = new JLabel("Start 2:");
        competitor2Label.setFont(new Font("Dialog",Font.BOLD,12));
        JComboBox competitor2Box = new JComboBox();
        competitor2Box.addItem("test");
        competitor2Box.addItem("test");
        competitor2Box.addItem("test");
        competitor2Box.setPreferredSize(new Dimension(150,20));
        formPanel.add(competitor2Label);
        formPanel.add(competitor2Box);
       
        JButton createButton = new JButton("Spil");
        formPanel.add(new JLabel(" "));
        formPanel.add(createButton);
       
        contentPanel.add(formPanel);
       
        centerCenterPanel.add(contentPanel);
       
        //creating right panel
        JLabel headlineRightLabel = new JLabel("Your sales:",JLabel.LEFT);
        centerRightPanel.add(headlineRightLabel,BorderLayout.NORTH);
       
        JList couponList = new JList();
        couponList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        JScrollPane scrollCouponList = new JScrollPane(couponList);
        scrollCouponList.setPreferredSize(new Dimension(250,300));
        JPanel scrollPanel = new JPanel();
        scrollPanel.add(scrollCouponList);
        centerRightPanel.add(scrollPanel,BorderLayout.CENTER);
       

        frame.add(centerPanel, BorderLayout.CENTER);

        frame.setSize(800,500);
        frame.setLocation(200,200);
        frame.setVisible(true);
    }

}

Der er kun ét problem her:
1) hvordan får jeg knappen til at blive mindre? den skal ikke have fuld bredde.
Avatar billede dennism Nybegynder
01. december 2006 - 21:17 #4
Har du et svar?
Eller må vi vist hellere få lukker her..smid endelig et svar ;)
Avatar billede winners79 Nybegynder
01. december 2006 - 21:40 #5
:)
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