2014-05-10 2 views
1

JComboBox의 선택한 항목에 따라 내용이 변경되는 JComboBox 및 JList가 포함 된 Java에서 GUI를 만들려고합니다.JScrollList를 JList에 추가하는 레이아웃을 변경하는 레이아웃

JList에 scroolPane을 추가하고 싶습니다. 나는이 문제를 명확히하기 위해 당신에게 코드와 이미지를 보여주지 :

JPanel listPanel = new JPanel(); 

Hashtable<String, String[]> subItems = new Hashtable<String, String[]>(); 
JComboBox<String> tendina; 
JList<String> subList; 

GridBagConstraints c; 

String ricevuti[] = {"Alex", "Ben", "Claire", "Dana", "Ellen", "Felicia", "Gary", "Hailey", "Imogen", "Jay", "Kate", "Alex", "Ben", "Claire", "Dana", "Ellen", "Felicia", "Gary", "Hailey", "Imogen", "Jay", "Kate"}; 
JList ricList = new JList(ricevuti); 

String inviati[] = {"Lara", "Megan", "Nikole", "Oscar", "Paige", "Quentin", "Ralph", "Sara", "Thelma", "Victoria", "William"}; 
JList invList = new JList(inviati); 

String ricInv[] = {"Seleziona un item..", "Ricevuti", "Inviati"}; 

Inbox() { 

    //... 

    listPanel.setLayout(new GridBagLayout()); 
    listPanel.setBackground(Color.BLUE); 

    /*** ComboBox ***/ 
    tendina = new JComboBox<String>(ricInv); 
    tendina.addActionListener(this); 
    tendina.setEditable(false); 
    c = new GridBagConstraints(); 
    c.fill = GridBagConstraints.HORIZONTAL; 
    c.gridwidth = 1; 
    c.gridx = 0; 
    c.gridy = 0; 
    c.insets = new Insets(-295, 10, 0, 0); //top, left, bottom, right 
    c.weightx = 1; 
    listPanel.add(tendina, c); 

    /*** Lista ***/ 
    subList = new JList<String>(); 
    subList.setPreferredSize(new Dimension(80, 280)); 
    subList.setVisibleRowCount(10); 
    subList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
    JScrollPane scrollList = new JScrollPane(subList); 
    subItems.put(ricInv[1], ricevuti); 
    subItems.put(ricInv[2], inviati); 
    c = new GridBagConstraints(); 
    c.fill = GridBagConstraints.HORIZONTAL; 
    c.gridwidth = 1; 
    c.gridx = 0; 
    c.gridy = 0; 
    c.insets = new Insets(30, 10, 0, 0); //top, left, bottom, right 
    c.weightx = 1; 
    **[1]**listPanel.add(subList, c); 
    **[2]**listPanel.add(scrollList, c); 

    //... 

} 

문제는 내가 listPanel에 [2] scrollList을 추가 할 때, 레이아웃이 엉망이다. listPanel에 하위 목록 [1]을 추가하면 레이아웃이 올바르지 만 분명히 scrollList가 없습니다.

레이아웃을 변경하지 않고 scrollList를 어떻게 추가 할 수 있습니까? http://www.mediafire.com/view/daye4rkx1tyhwbq/sublist.png

이 내가 listPanel에 scrollList를 추가 할 경우 발생하는 [2] :

내가 listPanel에 [1] 하위 목록을 추가 할 경우 발생하는 것입니다 http://www.mediafire.com/view/jfiky6j686e2h58/scroll.png

감사를


높이에 관해서는 문제가 subList.setVisibleRowCount(16);에 달려 있다는 것을 깨달았습니다.

하지만 너비는 어떻게 조정합니까?

+0

코드가 컴파일되지 않고 문제가 나타나지 않습니다. [MCVE] (http://stackoverflow.com/help/mcve)를 게시하십시오. – user1803551

+0

@ user1803551 안녕하세요, 여기 전체 코드가 있습니다 : http://pastebin.com/gnc63sMv – user3602008

+0

MCVE의 M은 최소한을 의미합니다. MCVE 링크를 읽고 코드를 올바르게 게시하십시오. – user1803551

답변