如何将JTextArea与另一个JTextArea并排放置?

时间:2019-06-06 14:18:12

标签: java swing layout-manager jtextarea

我正在尝试在GUI中将一个JTextArea放在另一个JTextArea旁边

我正在为数据库编写GUI,并希望将每个列中的数据放在不同的JTextArea中。这将使我的GUI看起来更好,并使查看数据更容易。我已经尝试过将JTextAreas添加到JPanel,但这似乎不起作用。

这是我到目前为止尝试过的:

public class GUIDisplayBooks extends JFrame{

    JPanel panel = new JPanel();
    JTextArea textAreaIsbn = new JTextArea();
    JTextArea textAreaTitle = new JTextArea();
    JTextArea textAreaSurname = new JTextArea();
    JTextArea textAreaForename = new JTextArea();
    JTextArea textAreaCategory = new JTextArea();
    JScrollPane scrollPane = new JScrollPane(panel);

    GUIDisplayBooks(ArrayList<Book> books)
    {
        this.add(panel);
        this.setSize(600,200);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

    for(Book book : books){            
        textAreaIsbn.append(book.getIsbn() + "\n");
        textAreaTitle.append(book.getTitle() + "\n");
        textAreaSurname.append(book.getSurname() + "\n");
        textAreaForename.append(book.getForename() + "\n");
        textAreaCategory.append(book.getCategory() + "\n");
    }
        panel.add(textAreaIsbn);
        panel.add(textAreaTitle);
        panel.add(textAreaSurname);
        panel.add(textAreaForename);
        panel.add(textAreaCategory);
        add(scrollPane);

    }

}

我一直得到一个空白的GUI窗口。也许这确实很明显,需要任何帮助

2 个答案:

答案 0 :(得分:1)

Swing组件只能有一个父对象:

JScrollPane scrollPane = new JScrollPane(panel);

我基本上是这样的:

JScrollPane scrollPane = new JScrollPane();
scrollPane.setViewportView(panel);

然后您将相同的panel添加到JFrame

this.add(panel);

将其从JScrollPane中删除,然后将空的JScrollPane添加到JFrame

add(scrollPane);

因此,删除此行,应使您的程序正常工作:

this.add(panel);

答案 1 :(得分:0)

您可以使用布局。存在各种实现,您可以先看一下here

水平放置FlowLayout即可。