簡體   English   中英

Java Swing JList

[英]Java Swing JList

我在Java Swing中使用JList,但是當我的Dialog打開時,List沒有顯示。

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"); 
} 

我找不到你在哪里設置JList的模型?

就像是

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

請查看Java編程語言代碼約定

FensterDrei而不是fensterdrei
myList而不是mylist

它的getContentPane不是getJContentPane,你不應該重載它。

相反,在您的構造函數(或其他立即調用的函數)中,您可以

getContentPane().setLayout(new BorderLayout());
getContentPane().add(getJList(), BorderLayout.CENTER);

要回答你的問題,我需要看到調用getJContentPane的代碼,以確保你實際上在某處添加了JPanel。 我還需要查看你是否已經為jContentPane分配了一些內容,因為如果該面板為null,則只添加列表。

我的猜測是,您實際上並未將返回的面板添加到對話框中,或者已為jContentPane指定了非空值。

對myList.setVisible(true)的調用沒有任何意義,因為它尚未添加到Window中。 當對話框可見時,其所有子對象也將變為可見。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM