2012-11-29 217 views
2

我有一個JList,我需要放置在滾動窗格中,因爲我從數據庫中獲取JList,並且值可以大大增加。我需要能夠將它們向下滾動,所以我寫道:添加Jlist到JScrollPane

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Container; 

import javax.swing.JFrame; 
import javax.swing.JInternalFrame; 
import javax.swing.JList; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.ListSelectionModel; 
public class Checkboxlistener extends JFrame { 

private JPanel jpAcc = new JPanel(); 
private JList checkBoxesJList; 

Checkboxlistener() { 
    // super("Deposit base", false, true, false, true); 
    setSize(1300, 600); 
    jpAcc.setLayout(null); 
    jpAcc.setBackground(Color.LIGHT_GRAY); 
    String labels[] = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J"}; 
    checkBoxesJList = new JList(labels); 

    checkBoxesJList.setBounds(10, 30, 80, 600); 
    checkBoxesJList.setBackground(Color.LIGHT_GRAY); 
    checkBoxesJList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
    JScrollPane scrollPane = new JScrollPane(checkBoxesJList); 

    jpAcc.add(checkBoxesJList); 
    jpAcc.add(scrollPane); 



    getContentPane().add(jpAcc); 
    setVisible(true); 
} 

public static void main(String args[]) { 
    Checkboxlistener cbl = new Checkboxlistener(); 
} 
} 

我在做什麼錯,因爲我沒有看到任何ScrollPane?

+0

你試過'了setPreferredSize()'爲JScrollPane的? –

+2

1)'checkBoxesJList.setBounds(10,30,80,600);'不要那樣做。使用佈局。 2)不要擴展'JFrame',只使用一個。 3)爲了更快得到更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –

+0

編輯我的帖子到SSCCE – ErrorNotFoundException

回答

5

列表已包含在滾動窗格中,因此您不得將列表添加到主面板。只有滾動窗格。

您做錯的另一件事是不使用a layout manager,並設置組件的邊界和大小。不要這樣做。讓佈局經理爲您定位和調整組件。

最後,你不應該從主線程中使用Swing組件。只在event dispatch thread

這是您的代碼的修改版本,可以正常工作。我刪除了背景顏色,這應該由L & F爲處理:

public class Checkboxlistener extends JFrame { 

    private JPanel jpAcc = new JPanel(); 
    private JList<String> checkBoxesJList; 

    Checkboxlistener() { 
     jpAcc.setLayout(new BorderLayout()); 
     String labels[] = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J" }; 
     checkBoxesJList = new JList<String>(labels); 

     checkBoxesJList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
     JScrollPane scrollPane = new JScrollPane(checkBoxesJList); 

     jpAcc.add(scrollPane); 

     getContentPane().add(jpAcc); 
     pack(); 
    } 

    public static void main(String args[]) { 
     SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       Checkboxlistener cbl = new Checkboxlistener(); 
       cbl.setVisible(true); 
      } 
     }); 
    } 
} 
+0

當我刪除Line'jpAcc.add (checkBoxesJList);'現在我的屏幕是空白的,即使列表不存在。 – ErrorNotFoundException

0

這是當我的佈局爲空我做過什麼

String[] dataList = {"Item1", "Item2", "Item4", "Item5", "Item6" }; 

javax.swing.JList list = new javax.swing.JList(dataList); 
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 

javax.swing.JScrollPane list_scroll = new javax.swing.JScrollPane(list); 
list_scroll.setBounds(x,y,width,height); 
mainPane.add(list_scroll);