gpt4 book ai didi

java - JTextArea 滚动功能

转载 作者:行者123 更新时间:2023-12-01 09:57:48 25 4
gpt4 key购买 nike

我目前有一个 Java 应用程序,它使用 JTextArea 实例向用户呈现数据。他们按下一个按钮,就会填充数据库中存储的数据。

没有垂直滚动条,数据库中的表包含的行数超出了屏幕的显示范围。

如何向该文本区域添加垂直滚动条?

代码的许多部分都依赖于写入 JTextArea,重构代码以适应打印到其他类型的容器将花费巨大的时间成本。

有没有办法将JTextArea包装到ScrollPane中?

当前代码(显示没有滚动条的textArea):

    /**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 1057, 484);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);

JTextArea mainTextArea = new JTextArea();

mainTextArea.setLineWrap(true);
mainTextArea.setWrapStyleWord(true);
mainTextArea.setBounds(21, 93, 995, 336);
frame.getContentPane().add(mainTextArea);
// (continued...)

我尝试将代码包装在滚动 Pane 中(既没有文本区域也没有滚动条出现):

    /**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 1057, 484);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);

JTextArea mainTextArea = new JTextArea();

mainTextArea.setLineWrap(true);
mainTextArea.setWrapStyleWord(true);
mainTextArea.setBounds(21, 93, 995, 336);
JScrollPane scroll = new JScrollPane (MainTextArea);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
frame.getContentPane().add(scroll);
frame.getContentPane().setVisible(true);
// (continued...)

最佳答案

你犯的几个错误

frame.getContentPane().setLayout(null);

  • 此语句删除与以下内容关联的默认 BorderLayoutJFrame 现在它没有任何布局。

  • 因为 JFrame 的布局变为空,所以您需要使用在添加到 JFrame 之前为 JScrollpane 设置 Bounds() 方法,否则它将不可见。

  • 如果你设置像这样的 scroll.setBounds(21, 93, 995, 336); 你将能够看到 JScrollPane 添加了 JFrame

注意: frame.getContentPane().setVisible(true); 不会使您的 JFrame 可见,您需要将其更改为 frame.setVisible(true)

始终尝试在 swing 中使用布局而不是设置 null 布局。如果使用 null 布局,则需要手动指定 setBounds,这对于在 swing 中设计 UI 来说不是一个好方法。

不使用任何布局的完整工作代码:

package com.jd.swing;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class JFrameExample {`enter code here`
private JFrame frame;

private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 1057, 484);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JTextArea MainTextArea = new JTextArea();
MainTextArea.setLineWrap(true);
MainTextArea.setWrapStyleWord(true);
MainTextArea.setBounds(21, 93, 995, 336);
JScrollPane scroll = new JScrollPane(MainTextArea);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scroll.setBounds(21, 93, 995, 336);
frame.getContentPane().add(scroll);
frame.setVisible(true);
}

public static void main(String[] args) {
new JFrameExample().initialize();
}
}

Output Screen

关于java - JTextArea 滚动功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37041000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com