Java Swing JList - PullRequest
       18

Java Swing JList

4 голосов
/ 25 января 2010

Я использую JList в Java Swing, но когда открывается мой диалог, список не отображается.

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

Ответы [ 3 ]

7 голосов
/ 25 января 2010

Я не могу найти, где вы устанавливаете модель JList?

Что-то вроде

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

Пожалуйста, ознакомьтесь с Соглашениями по коду для языка программирования Java

FensterDrei вместо fensterdrei
myList вместо mylist

4 голосов
/ 25 января 2010

Это getContentPane, а не getJContentPane, и вы не должны его перегружать.

Вместо этого в вашем конструкторе (или другой функции, которая вызывается сразу) вы делаете

getContentPane().setLayout(new BorderLayout());
getContentPane().add(getJList(), BorderLayout.CENTER);
1 голос
/ 25 января 2010

Чтобы ответить на ваш вопрос, мне нужно увидеть код, который вызывает getJContentPane, чтобы убедиться, что вы действительно добавляете этот JPanel куда-то. Мне также нужно проверить, назначили ли вы что-то для jContentPane, поскольку вы добавляете список только в том случае, если эта панель пуста.

Я предполагаю, что вы на самом деле не добавляете возвращенную панель в диалоговое окно или что jContentPane присвоено ненулевое значение.

Вызов myList.setVisible (true) не имеет смысла, поскольку он еще не добавлен в окно. Когда диалог становится видимым, все его дочерние элементы также становятся видимыми.

...