包装JFrame列表

时间:2013-11-14 19:57:44

标签: java swing user-interface

我正在创建一个Java GUI(请不要评论这个方面)并且我使用List()来显示字符串,如何使该列表具有一定的宽度并使文本换行如果它去在那个约束之外?现在我的代码非常简单:

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

myString将是ArrayList个字符串。

在一个有点相关的说明中,要构建这个GUI,我正在使用Google项目Eclipse功能,并且像大多数Java GUI构建器一样,它很难使用。我现在有工作代码,我只想制作一个GUI。我基本上想要显示二叉树的构建。是否有更容易使用的GUI构建器或方法?我知道我提出了两个不同的问题,但如果必须,我会继续使用这种方法。

1 个答案:

答案 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。