добавить компонент в JPanel - PullRequest
1 голос
/ 22 мая 2010

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

JList jl = new JList();
    Vector<String> v= new Vector<String>();
    v.add("one");
    v.add("Two");
    v.add("Three");
    jl.setListData(v);
    JScrollPane js = new JScrollPane(jl);
    js.setLocation(50, 50);
    js.setSize(100, 100);
    js.setVisible(true);
    jPanel1.add(js);

Ответы [ 3 ]

1 голос
/ 22 мая 2010

Список прокрутки не появляется, или элементы данных в списке?Кроме того, вы устанавливаете положение вручную.Серьезно, не делайте этого - используйте менеджер раскладки, многие из которых доступны, и вы можете легко использовать в редакторе графического интерфейса Netbeans Mattise.

Если главное окно находится подуправление менеджером макета, а затем вы добавляете что-то к нему, которое определяет его положение и размер, все хаос вырвется на свободу.А именно, менеджер компоновки перезапишет это, возможно, в результате размер станет равным 0, 0.

Что вам нужно сделать, это создать JPanel в вашем менеджере компоновки, чтобы сохранить позицию нового компонента и убедиться, чтоу него есть известное имя поля, на которое вы можете ссылаться и использовать для добавления.Убедитесь, что Panel также имеет FlowLayout или что-то в свойствах.

0 голосов
/ 23 мая 2010

Вы можете захотеть вызвать repaint () при динамическом создании элементов графического интерфейса.

0 голосов
/ 23 мая 2010

Я хочу добавить компонент без перетаскивания.

Вот простой JList пример, в котором не используется редактор графического интерфейса пользователя NetBeans. См. Как использовать списки для получения дополнительной информации.

import java.awt.*;
import java.util.Random;
import javax.swing.*;

public class JListTest {

    private static final Random random = new Random();

    public static final void main(String args[]) throws Exception {
        SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                createAndShowGUI();
            }
        });
    }

    private static void createAndShowGUI() {
        final DefaultListModel dlm = new DefaultListModel();
        for (int i = 0; i < 1000; i++) {
            dlm.addElement("Z" + (random.nextInt(9000) + 1000));
        }
        final JList list = new JList(dlm);

        JFrame frame = new JFrame("Test");
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.add(new JScrollPane(list), BorderLayout.CENTER);
        frame.pack();
        frame.setVisible(true);
    }
}
...