Avatar billede themepark Nybegynder
10. november 2005 - 07:04 Der er 1 kommentar

Vertikal top alignment på JFrame & tilføjelse af JPanels

Jeg har 2 problemer. Dels har jeg lavet et lille vindue med 3 knapper, 2 ovenpå hinanden til højre, og 1 til venstre. Problemet er at den til venstre kommer til at stå i miden, men jeg vil gerne have den alignet på toppen.

Jeg har prøvet, som i følgende eksempel at bruge FlowLayout, men jeg kan ikke umiddelbart se hvordan, hvis overhovedet, jeg kan ændre den vertikale alignment. Og BoxLayout ændrer heller ikke på noget, og jeg ved heller ikke hvordan jeg skal bruge den, da jeg extender min klasse som JFrame.

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

public class Test extends JFrame {
    public Test() {
      setLayout(new FlowLayout(FlowLayout.LEFT));
        add(new JButton("A"));
        JPanel B = new JPanel(new GridLayout(0,1));
        B.add(new JButton("C"));
        B.add(new JButton("D"));
        add(B);
        pack();
        setVisible(true);
    }
}

Mit andet problem er at jeg har lavet et JPanel med nogle JButtons og JLabels. Dette vil jeg gerne vise i 2 forskellige JPanels, som jeg så gerne vil tilføje til min JFrame. Det skal være 2 forskellige JFrames da jeg skal tilføje noget ekstra til dem senere, individuelt. Men hvis jeg tilføjer min JPanel til dem begge, vises den ikke på den første.

Jeg kan ikke helt se hvad der er galt her :S
Avatar billede _carsten Nybegynder
10. november 2005 - 17:46 #1
Den løser du bedst ved at bruge NullLayout eller GridBagLayout, her kan du se hvordan de virker.

Spørgsmål 2:
Lyder som om du mangler en add()/ setVisible()/ validate() eller lignende

public class LayoutTest extends javax.swing.JFrame {
    public LayoutTest() {
        initComponents();
    }
   
    private void initComponents() {
        gBL1 = new layout.GBL();
        nullL1 = new layout.NullL();

        getContentPane().setLayout(new java.awt.GridLayout());

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        gBL1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        getContentPane().add(gBL1);

        nullL1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        getContentPane().add(nullL1);

        pack();
    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new LayoutTest().setVisible(true);
            }
        });
    }
    private layout.GBL gBL1;
    private layout.NullL nullL1;
}




// GridBagLayout

public class GBL extends javax.swing.JPanel {
    public GBL() {
        initComponents();
    }
   
                       
    private void initComponents() {
        java.awt.GridBagConstraints gridBagConstraints;

        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();

        setLayout(new java.awt.GridBagLayout());

        jButton1.setText("jButton1");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        add(jButton1, gridBagConstraints);

        jButton2.setText("jButton2");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 0;
        add(jButton2, gridBagConstraints);

        jButton3.setText("jButton3");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        add(jButton3, gridBagConstraints);

    }
               
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
}



// NullLayout

public class NullL extends javax.swing.JPanel {
    public NullL() {
        initComponents();
    }
                       
    private void initComponents() {
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();

        setLayout(null);

        jButton1.setText("jButton1");
        add(jButton1);
        jButton1.setBounds(10, 10, 90, 23);

        jButton2.setText("jButton2");
        add(jButton2);
        jButton2.setBounds(110, 10, 100, 23);

        jButton3.setText("jButton3");
        add(jButton3);
        jButton3.setBounds(110, 40, 100, 23);

    }
                 
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
}
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