bling
bling

Reputation: 11

Position JLabel within JPanel

I want to position a JLabel within a JPanel, so that it appears at the top of the window. I then want to position two drop-down menu below that so that the user can choose from two sets of options.

How would I go about positioning these elements?

Upvotes: 0

Views: 622

Answers (1)

Gilbert Le Blanc
Gilbert Le Blanc

Reputation: 51445

Here's a JLabel title with two JComboBoxes. I have no idea what else you mean by a "drop-down menu".

Drop Down Layout

  1. I created a JPanel with a BorderLayout to hold the GUI.

  2. The title is a JLabel inside of a JPanel using the default FlowLayout.

  3. The JComboBoxes are inside of a JPanel using the default FlowLayout.

Here's the code:

package com.ggl.testing;

import java.awt.BorderLayout;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class DropDownLayout implements Runnable {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new DropDownLayout());
    }

    @Override
    public void run() {
        JFrame frame = new JFrame("Drop Down Layout");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        panel.setLayout(new BorderLayout());

        panel.add(createTitlePanel(), BorderLayout.NORTH);
        panel.add(createDropDownPanel(), BorderLayout.CENTER);

        frame.add(panel);

        frame.pack();
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
    }

    private JPanel createTitlePanel() {
        JPanel panel = new JPanel();

        JLabel titleLabel = new JLabel("Title");
        panel.add(titleLabel);

        return panel;
    }

    private JPanel createDropDownPanel() {
        JPanel panel = new JPanel();

        DefaultComboBoxModel<String> model1 = new DefaultComboBoxModel<String>();
        model1.addElement("Selection 1");
        model1.addElement("Selection 2");
        model1.addElement("Selection 3");
        model1.addElement("Selection 4");

        JComboBox<String> comboBox1 = new JComboBox<String>(model1);
        panel.add(comboBox1);

        DefaultComboBoxModel<String> model2 = new DefaultComboBoxModel<String>();
        model2.addElement("Choice 1");
        model2.addElement("Choice 2");
        model2.addElement("Choice 3");
        model2.addElement("Choice 4");

        JComboBox<String> comboBox2 = new JComboBox<String>(model2);
        panel.add(comboBox2);

        return panel;
    }

}

Upvotes: 4

Related Questions