想要在JTextArea上显示JList

时间:2011-04-09 19:29:28

标签: java swing jlist jtextarea

我想在JTextArea上显示JList,但它显示在JTextArea后面。我已经附加了两个图像来通过图像描述我的问题。在运行时我们如何在JTextArea上设置JList?

JTextArea后面的JList:

enter image description here

JTextArea上的JList:

enter image description here

2 个答案:

答案 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

上 祝你好运,博罗。