2010-05-22 181 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()。