1

我正在使用 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);
4

3 回答 3

1

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

JList这是一个不使用 NetBeans 的 GUI 编辑器的简单示例。有关更多信息,请参阅如何使用列表

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);
    }
}
于 2010-05-22T20:32:38.310 回答
1

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

如果主窗口在一个布局管理器的控制下,然后你添加一些东西来指定它的位置和大小,所有的混乱都会消失。也就是说,布局管理器将覆盖它,可能导致 size 变为 0, 0。

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

于 2010-05-22T19:49:33.017 回答
0

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

于 2010-05-23T11:26:31.597 回答