将组件添加到JPanel

时间:2010-05-22 19:45:12

标签: java jlist

我正在使用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 个答案:

答案 0 :(得分:1)

滚动列表没有出现,还是列表中的数据项?此外,您手动设置位置。说真的,不要这样做 - 使用布局管理器,其中许多是可用的,你可以在Netbeans GUI编辑器Mattise中easily use

如果主窗口在布局管理器的控制下,然后你向它添加一些指定其位置和大小的东西,那么所有混乱都会破裂。也就是说,布局管理器将覆盖它,可能是大小变为0,0的结果。

您需要做的是在布局管理器中创建一个JPanel来保存新组件的位置,并确保它具有您可以引用并用于添加的已知字段名称。确保Panel还具有FlowLayout或属性中的某些内容。

答案 1 :(得分:0)

  

我想在不使用拖放方式的情况下添加Component。

这是一个简单的JList示例,它不使用NetBeans的GUI编辑器。有关详情,请参阅How to Use Lists

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

答案 2 :(得分:0)

您可能希望在动态创建GUI元素时调用repaint()。