具有多个 JTextArea 的 JScrollPane

Posted

技术标签:

【中文标题】具有多个 JTextArea 的 JScrollPane【英文标题】:JScrollPane with multiple JTextAreas 【发布时间】:2011-12-10 17:29:42 【问题描述】:

我需要一种简单的方法来实现 JScrollPane,我可以在其中添加 JTextAreas。 正如您在 youtube 和 *** 上看到的那样,这应该像评论系统一样工作。

它应该在 java 代码中,如果有其他简单的方法我想知道它。

List<Comment> comments = businessLogicRepair.getComments(oid, "Internal");

        for (Comment comment : comments) 
            jInternalCommentScrollPane.add(new JTextArea(comment.getText()));

        

我的评论对象包含:

public Comment(String id, String type, String text, String author, String postDate, String repairId) 
    super(id);
    this.type = type;
    this.text = text;
    this.author = author;
    this.postDate = postDate;
    this.repairId = repairId;

我将 cmets 保存在数据库中,我可以轻松获取它们。问题是显示部分。

感谢您的帮助

【问题讨论】:

如需尽快获得更好的帮助,请发帖 SSCCE。显然,要成为 SC,有必要将 DB 排除在外。顺便说一句,在某个时候问一个明确的问题是值得的。你有什么问题? 获取JPanel 并将所有JTextArea 添加到该面板并将面板放入JScrollPane 感谢这个 Adil Soomro 的帮助,它就像一个魅力。 【参考方案1】:

您必须接受可以只将一个JComponent 放入JScrollPane,在您的情况下只有一个JTextArea

【讨论】:

JComponent 可以是文本区域的网格,如here 所示。 没有嵌套滚动条!【参考方案2】:

下面是一个简单的例子,它将新的文本区域添加到滚动的GridLayout

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

/** @see http://***.com/questions/7818387 */
public class ScrollGrid extends JPanel 

    private static final int N = 16;
    private JTextArea last;
    private int index;

    public ScrollGrid() 
        this.setLayout(new GridLayout(0, 1, 3, 3));
        for (int i = 0; i < N; i++) 
            this.add(create());
        
    

    private JTextArea create() 
        last =  new JTextArea("***…" + ++index);
        return last;
    

    private void display() 
        JFrame f = new JFrame("ScrollGrid");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(new JScrollPane(this));
        f.add(new JButton(new AbstractAction("Add") 

            @Override
            public void actionPerformed(ActionEvent e) 
                add(create());
                revalidate();
                scrollRectToVisible(last.getBounds());
            
        ), BorderLayout.SOUTH);
        f.pack();
        f.setSize(200, 160);
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    

    public static void main(String[] args) 
        EventQueue.invokeLater(new Runnable() 

            @Override
            public void run() 
                new ScrollGrid().display();
            
        );
    

【讨论】:

【参考方案3】:

也许 JTable 比 JTextArea 更容易使用。

请参阅:How to Use Tables。

【讨论】:

以上是关于具有多个 JTextArea 的 JScrollPane的主要内容,如果未能解决你的问题,请参考以下文章

java swing 怎么同时读取多个txt文档,然后一对一的给对应的JTextArea

用JFileChooser选择多个多文件,然后要显示这些文件的路径在JTextArea里。这段代码是啥?

JTextArea中开启了自动换行怎么得到文本框中的行数

在 JTextArea 中添加边距?

java中统计JTextArea中的行数有两个方法的问题!

让 JTextArea 显示固定宽度的字体而不进行抗锯齿