2010-01-25 7 views
4

Я использую JList в Java Swing, но когда мой диалог открывается, список не отображается.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 (/ панель)

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

код вызова getJContentPane():

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

Ar e вы не видите окно списка или только его содержимое? также, BTW, вы делаете свой список «видимым» перед добавлением его в панель. – Uri

+0

JContentPane видна? Вы вызвали пакет()? (только угадывание) – helios

+0

я не вижу коробку (set.visible был всего лишь тестом: P) – Tyzak

ответ

6

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

Что-то вроде

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

Пожалуйста, посмотрите на Code Conventions for the Java Programming Language

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

+0

привет, вы правы, private DefaultListModel model2 = new DefaultListModel(); so -> if (mylist == null) { mylist = new JList (MODEL); – Tyzak

4

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

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

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

привет, не отличается ли это от имени метода getContentPane или getJContentPane? Я думаю, что это просто имя-метод, не так ли? вот так? private void initialize() { \t \t this.setSize (300, 200); \t \t this.setContentPane (getJContentPane()); \t \t this.setTitle ("Auswahl"); \t \t getContentPane(). Add (getJList(), BorderLayout.CENTER); \t \t getContentPane(). Add (getJList(), BorderLayout.ЦЕНТР); \t} – Tyzak

1

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

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

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

+0

Привет, частная пустота Initialize() { \t \t this.setSize (300, 200); \t \t this.setContentPane (getJContentPane()); \t \t this.setTitle ("Auswahl"); \t} частный JPanel getJContentPane() { \t \t если (jContentPane == NULL) { \t \t \t jContentPane = новый JPanel(); \t \t \t jContentPane.setLayout (новый BorderLayout()); \t \t \t jContentPane.add (getJList(), BorderLayout.CENTER); \t \t \t \t \t} \t \t возвращение jContentPane; \t} Вы имеете в виду это? – Tyzak

+0

@Tyzak - отредактируйте свой вопрос, чтобы добавить код. Danke –

+0

привет, поэтому решение найдено, я не редактирую команду, хорошо? – Tyzak

Смежные вопросы