我正在尝试使用JTextArea实现JScrollPane.JTextArea被附加到,我希望JScrollPane在添加更多文本时继续向下滚动.怎么能实现这一目标?
我试图在java中的textArea中获取控制台的内容.
例如,如果我们有这个代码,
class FirstApp {
public static void main (String[] args){
System.out.println("Hello World");
}
}
Run Code Online (Sandbox Code Playgroud)
我想将"Hello World"输出到textArea,我必须选择什么actionPerformed?
我在JPanel中有一个JTextArea.我怎样才能让JTextArea填充整个JPanel并在JPanel调整大小时调整大小并在输入太多文本时滚动?
我有一个带滚动条的文本区域.我会定期添加新的文本行.我希望每当添加新行时,文本区域会自动滚动到最底部的条目(最新的条目).我怎么能做到这一点?
textAreaStatus = new WebTextArea();
scrollPane = new JScrollPane(textAreaStatus);
textAreaStatus.setBackground(Color.black);
textAreaStatus.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
Run Code Online (Sandbox Code Playgroud) 我想创建这样的东西:

主面板的边距(x)和TextArea位于该面板的中心,几乎填满了面板.在底部是另一个具有自定义大小(高度y)的面板,可以通过一些快捷方式切换为可见和不可见.底部面板具有FlowLayout和少量元素.
问题是我不知道该怎么做.
BoxLayout没有边距.
我试过GridBagLayout,但我不工作或我不能理解它:(
我也试过设置JTextArea边距
textMain.setMargin(new Insets(insetTop, insetLeft, insetBottom, insetRight));
Run Code Online (Sandbox Code Playgroud)
但是当有大量文字时,顶部和底部边距消失.所以现在我正在尝试使用Panels.
请有人帮我这个吗?
我这里有一个简单的Java问题.我想自动文本滚动到使用JTextArea创建的文本区域的最后一行的开头.文本区域的每行文本量远远长于文本区域的宽度.
这是我用来设置它的代码片段.
JTextArea textArea = new JTextArea();
DefaultCaret caret = (DefaultCaret)textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
Run Code Online (Sandbox Code Playgroud)
现在的问题是,使用上面的代码,默认行为是插入符号自动定位到文档的末尾,因此,整个文本区域的开头部分超出了范围.我更喜欢自动滚动发生在文档最后一行的开头.
为清楚起见,这里有两个屏幕截图,
我想要的是第一个,但正在发生的是第二个.

如何将文本添加到a JTextArea而不是替换所有文本?
我知道setText(String)但除此之外我有点失落.
在我可以找到的所有使用a的例子中JTextArea,高度和宽度在构造之前是已知的JTextArea,如果JTextArea需要更多高度,那么它被放在a中JScrollPane.显然,高度JTextArea取决于宽度和文本内容.
现在,我的情况要求我不使用a JScrollPane,而是JTextArea要足够高以显示所有文本.当我创建时JTextArea,我知道文本内容以及它必须使用的宽度; 我不知道高度 - 我希望在不切断任何文本的情况下尽可能小.这似乎很难实现.
作为旁注,JTextArea将添加到JPanel没有布局管理器的 - 它使用基于添加的组件的首选大小的绝对定位.这要求我JTextArea将返回正确的尺寸getPreferredSize().正确的尺寸应该是我在构造时提供的宽度,以及显示具有所提供宽度的所有文本所需的最小高度.
我发现了一些类似的线程,讨论了有关的奇怪/错误JTextArea,有时通过pack()在父容器上调用两次来解决.这对我来说不是一个选择.我很想基本上创建我自己JTextArea的宽度和字符串,并根据宽度和字体设置计算必要的最小高度,但我想我会先考虑先花费时间才能做到这一点.
希望我的问题很明确.感谢大家的帮助!
在对问题中提出的问题感兴趣之后, 我试图接近它几次并且失败了,我不喜欢那样:)
我认为如果问题被分成子问题,它可能有助于解决它.
为简单起见,假设JTextArea不会改变其大小,因此我们不需要担心重新评估等.我认为重要的问题是:
1.如何计算某个文本在JTextArea中占用的行数?
2. JTextArea中的列数与它可以放在一行中的字符数之间的关系是什么?所以我们可以计算行长度.
请在下面找到包含要处理的文本区域的示例代码:
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
public class TextAreaLines
{
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
JPanel p = new JPanel();
JFrame f = new JFrame();
JTextArea ta = new JTextArea("dadsad sasdasdasdasdasd");
ta.setWrapStyleWord(true);
ta.setLineWrap(true);
ta.setRows(5);
ta.setColumns(5);
p.add(ta);
f.setContentPane(p);
f.setSize(400, 300);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
//BTW the code below prints 1
System.out.println("ta.getLineCount()="+ta.getLineCount());
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
编辑1:所以我提出了以下代码,但问题是输出不是你看到的,即
//for input
//JTextArea ta = …Run Code Online (Sandbox Code Playgroud) 我正在使用平台外观和在Linux上我的JTextArea非常易读但在Windows上它使用"Monospaced 9"并且文本非常小.
为什么以及解决这个问题的最佳方法是什么?
为什么默认的Windows外观在JTextArea中使用这么小的字体?
java ×10
jtextarea ×10
swing ×10
jscrollpane ×2
autoresize ×1
autoscroll ×1
awt ×1
caret ×1
insets ×1
jpanel ×1
jscrollbar ×1
margins ×1
string ×1