我正在使用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);
答案 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()。