2013-10-06 32 views
1

我有一個滾動窗格,我想添加多個jlabel。在jTextField1中,用戶輸入no between 1-10(這裏沒有,表示必須添加多少個jlabel),因此jpgels將被添加到滾動窗格中。在ScrollPane中添加多個jlabel

誰能告訴我我該怎麼做。

int x=jTextField1.getText; 
    JPanel mainpanel = new JPanel(); 
    mainpanel.setLayout(new BoxLayout(mainpanel, BoxLayout.X_AXIS)); 
    this.add(mainpanel); 

    JPanel rightpanel = new JPanel(); 
    rightpanel.setLayout(new FlowLayout()); 
    for (int i = 0; i < x; i++) 
    { 
     rightpanel.add(new JLabel("Label " + i)); 
    } 
    mainpanel.add(new JLabel("Left label")); 
    mainpanel.add(new JScrollPane(rightpanel)); 

此代碼無效。雖然它是工作,當我們在其他的JFrame即

JFrame frame = new JFrame("Labels"); 

    JPanel mainpanel = new JPanel(); 
    mainpanel.setLayout(new BoxLayout(mainpanel, BoxLayout.X_AXIS)); 
    frame.add(mainpanel); 

    JPanel rightpanel = new JPanel(); 
    rightpanel.setLayout(new FlowLayout()); 
    for (int i = 0; i < 100; i++) 
    { 
     rightpanel.add(new JLabel("Label " + i)); 
    } 
    mainpanel.add(new JLabel("Left label")); 
    mainpanel.add(new JScrollPane(rightpanel)); 
    frame.setSize(500, 100); 
    frame.setVisible(true); 

但是做同樣的事情,我想這樣做在同一個JFrame中。

回答

4
  • 您不直接將JLabel添加到JScrollPane。
  • 但是,您可以將它們添加到由JScrollPane的JViewport持有的JPanel中(請務必通過JScollPane tutorial)。通常認爲的JPanel將使用網格佈局,你只需在JPanel的呼叫add(...),然後在JPanel中調用revalidate()repaint()所有組件都已經添加
  • 不過話說回來,這聽起來就好像你」後添加的JLabel使用由JScrollPane擁有的JList並將項添加到JList中會更好。請查閱JList tutorial以瞭解如何使用此功能的詳細信息。

想了解更詳細的答案,您可能想問一個更詳細的問題,包括代碼,最好是sscce

+0

嘿氣墊船。我已編輯我的問題,請幫助我 –

+1

*「我編輯了我的問題」*您可能應先閱讀SSCCE上的鏈接文檔。編輯包括不可編譯的代碼片段,而不是SSCCE。 –

+0

@AmitSinghGour:是的,創建併發布你的sscce。但無論如何,看看我上面發佈的JList教程鏈接,因爲這看起來是最直接的解決方案。 –