1

JTextArea の上に JList を表示したいのですが、JTextArea の背後に表示しています。問題を画像で説明するために 2 つの画像を添付しました。実行時に JTextArea に JList を設定するにはどうすればよいですか?

JTextArea の背後にある JList:

ここに画像の説明を入力

JTextArea 上の JList:

ここに画像の説明を入力

4

2 に答える 2

4

bsm: この状況では JList を使用するのではなく、JTextArea に正しく表示されるドロップダウン リストを持つ JComboBox を使用する必要があります。たとえば、

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 でコーディングする方法を学ぶ能力が妨げられていると正直に信じているからです。

于 2011-04-09T19:50:03.590 に答える
2

デフォルトの動作は、他のコンポーネントの上にコンボ コンテンツを表示することだと思います。したがって、このようにしています。現時点で考えられる唯一の提案は、レイヤード ペインを使用することです。

オプション付きのコンボボックスの部分がどのレイヤーに追加されているかを確認できます。次に、リストを上のリストに追加します。

LayeredPane に関するチュートリアルhttp://download.oracle.com/javase/tutorial/uiswing/components/layeredpane.html

このRootPaneの説明から、コンボボックスのオプションはポップアップレイヤーに表示する必要があると思いますhttp://download.oracle.com/javase/tutorial/uiswing/components/rootpane.html

がんばれ、ボロ。

于 2011-04-09T19:38:21.877 に答える