5

Java Swing で JList を使用していますが、ダイアログを開いたときにリストが表示されません。

private JList getJList() {
  if (mylist == null) {
   mylist = new JList();
   mylist.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
   mylist.setSize(new Dimension(154, 106));
   model.addElement("test");
   model.addElement("zwei");
   mylist.setVisible(true);

  }
  return mylist;
 }

リストは次のように定義されています。

private JPanel getJContentPane() {
  if (jContentPane == null) {
   jContentPane = new JPanel();
   jContentPane.setLayout(new BorderLayout());
   jContentPane.add(getJList(), BorderLayout.CENTER);

  }
  return jContentPane;
 }

JContentPane (/Panel) です

public fensterdrei(Frame owner) {
  super(owner);
  initialize();
  }

コード呼び出しgetJContentPane():

private void initialize() {
      this.setSize(300, 200); 
      this.setContentPane(getJContentPane()); 
      this.setTitle("Auswahl"); 
} 
4

3 に答える 3

8

JList のモデルを設定している場所が見つかりませんか?

何かのようなもの

mylist = new JList();    
mylist.setModel(model);

Java プログラミング言語のコード規則をご覧ください。

FensterDreiの代わりfensterdrei
myListmylist

于 2010-01-25T17:53:40.097 に答える
4

getJContentPane ではなく getContentPane であり、オーバーロードすることは想定されていません。

代わりに、コンストラクター (またはすぐに呼び出される他の関数) で次のことを行います。

getContentPane().setLayout(new BorderLayout());
getContentPane().add(getJList(), BorderLayout.CENTER);
于 2010-01-25T16:03:48.320 に答える
1

あなたの質問に答えるには、getJContentPaneを呼び出すコードを見て、実際にそのJPanelをどこかに追加していることを確認する必要があります。また、jContentPaneに何かを割り当てたかどうかも確認する必要があります。これは、そのパネルがnullの場合にのみリストを追加するためです。

私の推測では、返されたパネルを実際にダイアログに追加していないか、jContentPaneにnull以外の値が割り当てられています。

myList.setVisible(true)の呼び出しは、まだWindowに追加されていないため、意味がありません。ダイアログが表示されると、そのすべての子も表示されます。

于 2010-01-25T16:24:47.347 に答える