2013-11-14 37 views
0

我正在創建一個Java GUI(請不要評論這方面),我正在使用List()來顯示字符串,我如何使該列表具有一定的寬度,並使文本如果超出外部那個約束?現在我的代碼非常簡單:包裝JFrame列表

List list = new List(); 
list.add(myString); 
contentPane.add(list, BorderLayout.WEST); 

myString將字符串ArrayList

在一個有點相關的說明中,爲了構建這個GUI,我使用了Google項目的Eclipse功能,並且像大多數Java GUI構建器一樣使用它非常困難。我現在有工作代碼,我只是想爲其製作GUI。我基本上想顯示一個二叉樹的建設。是否有更容易使用的GUI構建器或方法?我知道我提出了兩個不同的問題,但如果必須的話,我會繼續使用這種方法。

+1

什麼是'List' - >'java.awt.List'? – nachokk

+1

請不要評論這方面---> :-)發佈一個SSCCE短,可運行,可編譯,否則你可能成爲好笑話的目標 – mKorbel

+0

你如何定義你的字符串寬度約束?人物?寸?釐米? –

回答

2

最直接的方法是將您的字符串封裝到模型類中。

以下是創建模型類的一種方法。

public class BreakableString { 

    private String string; 

    public BreakableString(String string) { 
     this.string = string; 
    } 

    public String getString() { 
     return string; 
    } 

    @Override 
    public String toString() { 
     StringBuilder builder = new StringBuilder(); 
     int maxWidth = 80; 
     String s = string; 

     while (s.length() > maxWidth) { 
      String t = getStringPart(s, maxWidth); 
      builder.append(t); 
      builder.append(System.getProperty("line.separator")); 
      s = s.substring(t.length()); 
     } 

     builder.append(s); 

     return builder.toString(); 
    } 

    private String getStringPart(String s, int maxWidth) { 
     String t = s.substring(0, maxWidth); 
     int ePos = t.lastIndexOf(" "); 
     if (ePos > 0) { 
      return t.substring(0, ePos); 
     } else { 
      return t; 
     } 
    } 

} 

接下來,創建一個BreakableString的DefaultListModel。你使用DefaultListModel來構造你的JList。

如果這不起作用,您可以在JPanel上創建多個JTextAreas。您使用JScrollPane包含JPanel。