这可能是一个奇怪的问题,所以我请你们这些人来支持我。
我想向JFrame
提供信息。特别是String
。
这是捕获,它是一个非常长的String
。比如,里程。总共想几十行信息。
它有点像电话簿,其名称多于您在页面上可能容纳的名称,并且您只能使用该页面。
所以我在想滚动条。
我试过了:
JTextArea area = new JTextArea(veryLongText.toString());
JScrollPane scrollPane = new JScrollPane(area);
但这不起作用,因为在我添加更多文字之前我无法向下滚动。这不是我想要的。
简单来说,我想要一个文本框,如果窗口太小而无法容纳其中的所有文本,我可以滚动它。
我将如何做到这一点?
答案 0 :(得分:5)
尝试将其设置为允许换行......
JTextArea area = new JTextArea(veryLongText.toString());
area.setLineWrap(true);
设置文本区域的换行策略。如果设置为true则 如果行太长而无法放入已分配的行,则会对其进行换行 宽度。如果设置为false,则将始终打开行。一个 更改策略时会触发PropertyChange事件(“lineWrap”)。 默认情况下,此属性为false。
甚至可以使用...
包装字边界area.setWrapStyleWord(true);
设置文本区域换行时使用的换行样式。如果 设置为true,行将被包裹在单词边界(空白) 如果它们太长而不适合分配的宽度。如果设置为 false,这些行将被包裹在字符边界。默认情况下 这个属性是假的。
一般来说,我建议
请查看JTextArea
JavaDocs和How to use text areas了解更多详情......
答案 1 :(得分:4)
这有点像电话簿,其名称多于你可能适合的页面
我建议在JList
中使用JTable
或JScrollPane
。
有关详细信息,请参阅您最喜爱的搜索引擎中的“如何使用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();
}
}
祝你好运!