【问题标题】:Position JLabel within JPanel在 JPanel 中定位 JLabel
【发布时间】:2015-07-06 21:03:55
【问题描述】:

我想在JPanel 中定位JLabel,以便它出现在窗口顶部。然后我想在其下方放置两个下拉菜单,以便用户可以从两组选项中进行选择。

我将如何定位这些元素?

【问题讨论】:

  • 1) 以最小尺寸提供 ASCII 艺术或 GUI 的预期布局的简单绘图,如果可调整大小,则具有更大的宽度和高度。 2) 这将通过使用布局管理器或combinations of them 以及white space 的布局填充和边框来实现。

标签: java swing jpanel jlabel layout-manager


【解决方案1】:

这是一个带有两个 JComboBox 的 JLabel 标题。我不知道您所说的“下拉菜单”是什么意思。

  1. 我创建了一个带有 BorderLayout 的 JPanel 来保存 GUI。

  2. 标题是使用默认 FlowLayout 的 JPanel 内的 JLabel。

  3. JComboBox 位于使用默认 FlowLayout 的 JPanel 内部。

代码如下:

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;
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    相关资源
    最近更新 更多