框架提供了大量信息

时间:2014-02-19 00:11:22

标签: java swing

这可能是一个奇怪的问题,所以我请你们这些人来支持我。

我想向JFrame提供信息。特别是String

这是捕获,它是一个非常长的String。比如,里程。总共想几十行信息。

它有点像电话簿,其名称多于您在页面上可能容纳的名称,并且您只能使用该页面。

所以我在想滚动条。

我试过了:

    JTextArea area = new JTextArea(veryLongText.toString());
    JScrollPane scrollPane = new JScrollPane(area);

但这不起作用,因为在我添加更多文字之前我无法向下滚动。这不是我想要的。

简单来说,我想要一个文本框,如果窗口太小而无法容纳其中的所有文本,我可以滚动它。

我将如何做到这一点?

5 个答案:

答案 0 :(得分:5)

尝试将其设置为允许换行......

JTextArea area = new JTextArea(veryLongText.toString());
area.setLineWrap(true);
  

设置文本区域的换行策略。如果设置为true则   如果行太长而无法放入已分配的行,则会对其进行换行   宽度。如果设置为false,则将始终打开行。一个   更改策略时会触发PropertyChange事件(“lineWrap”)。   默认情况下,此属性为false。

甚至可以使用...

包装字边界
area.setWrapStyleWord(true);
  

设置文本区域换行时使用的换行样式。如果   设置为true,行将被包裹在单词边界(空白)   如果它们太长而不适合分配的宽度。如果设置为   false,这些行将被包裹在字符边界。默认情况下   这个属性是假的。

一般来说,我建议

请查看JTextArea JavaDocsHow to use text areas了解更多详情......

答案 1 :(得分:4)

  

这有点像电话簿,其名称多于你可能适合的页面

我建议在JList中使用JTableJScrollPane

有关详细信息,请参阅您最喜爱的搜索引擎中的“如何使用X”,其中“x”是以上三种中的任何一种。

答案 2 :(得分:3)

您与JScrollPane走在正确的轨道上。我强烈建议您查看JScrollPane tutorial

简而言之,您将需要使用以下代码:

//In a container that uses a BorderLayout:
textArea = new JTextArea(5, 30);
...
JScrollPane scrollPane = new JScrollPane(textArea);
...
add(scrollPane, BorderLayout.CENTER);

这意味着textArea中的所有内容都可以滚动。如果更合适,您可以用JPanel替换它。

答案 3 :(得分:3)

听起来你没有足够的文字让它滚动。你的解决方案似乎是正确的。

也许您希望滚动条始终存在,使用其他构造函数:JScrollPane(Component, int, int),其中包含来自ScrollPaneConstants的常量。

答案 4 :(得分:1)

我感觉你的字符串非常长。它中是否有任何新的行字符?即“\ n”?

Anyhoo,这是一个有效的例子

//
//  Test ScrollPane with very very long string
//
package testjscrollpane;
import javax.swing.*;

public class TestJScrollPane extends JFrame
{
    public TestJScrollPane()
    {
        //Create a long long string
        String s = "";
        int n = 0;
        for (int i=0; i<10000; i++)
        {
            s += Integer.toString(i)+"  ";

            //this next part breaks the string up into lots of lines
            //if commentted out, the whole string will appear on 1 line
            //with no vertical scrollbar
//            n++;
//            if(n==100)
//            {
//                s += "\n";
//                n = 0;
//            }
        }

        this.setDefaultCloseOperation((JFrame.EXIT_ON_CLOSE));
        this.setSize(400, 400);

        JTextArea area = new JTextArea(s);
        JScrollPane scrollpane = new JScrollPane(area);
        this.add(scrollpane);

        this.setVisible(true);
    }

    public static void main(String[] args)
    {
        TestJScrollPane myFrame = new TestJScrollPane();
    }

}
祝你好运!