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

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

它应该在 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 的帮助,它就像一个魅力。

标签: java swing comments jscrollpane jtextarea


【解决方案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://stackoverflow.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("Stackoverflow…" + ++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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-16
      • 2012-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-15
      相关资源
      最近更新 更多