我想在JTextArea上显示JList,但它显示在JTextArea后面。我已经附加了两个图像来通过图像描述我的问题。在运行时我们如何在JTextArea上设置JList?
答案 0 :(得分:4)
bsm:你不应该在这种情况下使用JLists,而是使用JComboBoxes,它将具有在JTextArea上正确显示的下拉列表。例如,
import java.awt.BorderLayout;
import javax.swing.*;
public class JComboAndJTextArea extends JPanel {
private static final String[] ITEMS1 = {"one", "two", "three", "four", "five"};
private static final String[] ITEMS2 = {"Monday", "Tuesday",
"Wednesday", "Thursday", "Friday"};
public JComboAndJTextArea() {
JPanel northPanel = new JPanel();
northPanel.add(new JCheckBox("Reminder"));
northPanel.add(new JComboBox(ITEMS1));
northPanel.add(new JComboBox(ITEMS2));
setLayout(new BorderLayout());
add(northPanel, BorderLayout.NORTH);
add(new JScrollPane(new JTextArea(8, 30)), BorderLayout.CENTER);
}
private static void createAndShowUI() {
JFrame frame = new JFrame("JComboAndJTextArea");
frame.getContentPane().add(new JComboAndJTextArea());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
createAndShowUI();
}
});
}
}
我还建议您暂时将NetBeans代码生成放在一边,因为我真的相信,对于许多人来说,它阻碍了他们学习如何在Swing中编码的能力。
答案 1 :(得分:2)
我认为默认行为是显示其他组件的组合内容,因此您可以这样做。我现在想到的唯一建议是使用分层窗格。
您可以检查添加了选项的组合框部分到哪一层。然后将列表添加到上面的列表中。
关于LayeredPane的教程http://download.oracle.com/javase/tutorial/uiswing/components/layeredpane.html
从RootPane的这个描述中我认为组合框的选项必须显示在弹出层http://download.oracle.com/javase/tutorial/uiswing/components/rootpane.html
上 祝你好运,博罗。