我对我的JTextArea感到非常惊讶。在JTextArea JAVAdoc之后,我尝试创建一个长字符串的JTextArea,并希望自动换行。
JTextArea text = new JTextArea(myLongString,10,100);
text.setLineWrap(true);
text.setWrapStyleWord(true);
myContainer.add(text);
但事实上我的文字超出了我的框架,逐行的数字大约为180。 也许我不明白或布局管理中的问题。但是为了避免布局复杂化,我将其缩小为基本框架> panel> textarea。
请注意,英语不是我的母语。
public class myTest extends JFrame
{
public myTest()
{
JPanel simplePanel = new JPanel();
String alongString = "Accusata consulatu vix ad, eruditi albucius liberavisse est no. Platonem reprehendunt qui ea. Dicta recteque referrentur an his, id facete maiorum vulputate vim. At suas oratio mnesarchum quo. Quidam omnium necessitatibus ex sea, vix soleat quaerendum conclusionemque ut, case malorum nam an.No quis suas discere nam, nam ex nostro fastidii vivendum. Sed cu nobis ullamcorper. Has at doctus ponderum honestatis. In facer dicam corpora vis.";
JTextArea myText = new JTextArea(alongString,10,100 );
this.setSize(800, 600);
myText.setLineWrap(true);
myText.setWrapStyleWord(true);
simplePanel.add(myText);
this.add(simplePanel);
this.validate();
this.setVisible(true);
}
public static void main(String[] args)
{
new myTest();
}
}
答案 0 :(得分:2)
问题是你的jtext区域是一个带有默认布局管理器的面板。你需要改变别的东西。查看下面修改后的代码并告诉我它是否适合您。
public MyTest()
{
String alongString = "Accusata consulatu vix ad, eruditi albucius liberavisse est no. Platonem reprehendunt qui ea. Dicta recteque referrentur an his, id facete maiorum vulputate vim. At suas oratio mnesarchum quo. Quidam omnium necessitatibus ex sea, vix soleat quaerendum conclusionemque ut, case malorum nam an.No quis suas discere nam, nam ex nostro fastidii vivendum. Sed cu nobis ullamcorper. Has at doctus ponderum honestatis. In facer dicam corpora vis.";
JTextArea myText = new JTextArea(alongString,10,100 );
myText.setLineWrap(true);
myText.setWrapStyleWord(true);
JPanel simplePanel = new JPanel(new BorderLayout(5, 5));
simplePanel.add(myText, BorderLayout.CENTER);
this.add(simplePanel);
this.validate();
this.setSize(800, 600);
this.setVisible(true);
}
public static final void main(String ... args) {
new MyTest();
}
答案 1 :(得分:1)
您可能需要将JTextArea放在JScrollPane中。如果您的JTextArea在父容器中是松散的,则父容器的布局管理器将确定JTextArea的大小。
我不确定您正在寻找什么功能,但以下代码使用JTextArea填充JFrame。如果框架太小,则会显示滚动条,以便所有文本都可见。
我删除了行和列的JTextArea构造函数参数。注意:“columns”参数并不意味着可以容纳多少个字母。我不知道究竟是什么“列”,但它似乎比典型的字母宽。
我还删除了“myPanel”,并将JScrollPane直接添加到JFrame。
String alongString = "Accusata consulatu vix ad, eruditi albucius liberavisse est no. Platonem reprehendunt qui ea. Dicta recteque referrentur an his, id facete maiorum vulputate vim. At suas oratio mnesarchum quo. Quidam omnium necessitatibus ex sea, vix soleat quaerendum conclusionemque ut, case malorum nam an.No quis suas discere nam, nam ex nostro fastidii vivendum. Sed cu nobis ullamcorper. Has at doctus ponderum honestatis. In facer dicam corpora vis.";
JTextArea myText = new JTextArea(alongString);
JScrollPane scrollPane = new JScrollPane(myText);
this.setSize(800, 600);
myText.setLineWrap(true);
myText.setWrapStyleWord(true);
this.add(scrollPane);
this.validate();
this.setVisible(true);