【问题标题】:Position JLabel within JPanel在 JPanel 中定位 JLabel
【发布时间】:2015-07-06 21:03:55
【问题描述】:
我想在JPanel 中定位JLabel,以便它出现在窗口顶部。然后我想在其下方放置两个下拉菜单,以便用户可以从两组选项中进行选择。
我将如何定位这些元素?
【问题讨论】:
标签:
java
swing
jpanel
jlabel
layout-manager
【解决方案1】:
这是一个带有两个 JComboBox 的 JLabel 标题。我不知道您所说的“下拉菜单”是什么意思。
我创建了一个带有 BorderLayout 的 JPanel 来保存 GUI。
标题是使用默认 FlowLayout 的 JPanel 内的 JLabel。
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;
}
}