2010-05-22 196 views
1

我使用netBeans编辑器来创建桌面应用程序。并且我想添加Component而不使用拖放方式。我想这样的代码添加到JList的JPanel的但没有表现出将组件添加到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); 

回答

1

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

如果主窗口在布局管理器的控制下,然后添加了一些指定其位置和大小的东西,那么所有的混乱都会打散。也就是说,布局管理器会覆盖这个,可能会导致大小变为0,0。

您需要做的是在布局管理器中创建一个JPanel,以保持新组件的位置并确保其具有一个您可以参考并用于添加的已知字段名称。确保Panel在属性中也有FlowLayout或其他东西。

+0

+1倡导布局管理器! – trashgod 2010-05-22 20:33:04

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

当您动态创建GUI元素时,您可能需要调用repaint()。