具有多个 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