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

Java 如何将一个JTextArea与另一个JTextArea并排放置?,java,swing,layout-manager,jtextarea,Java,Swing,Layout Manager,Jtextarea,我试图在GUI中将一个JTextArea放在另一个JTextArea的旁边 我正在为数据库编写GUI,并希望将每列的数据放在不同的JTextArea中。这将使我的GUI看起来更好,并且更容易查看数据。我已经尝试将JTextAreas添加到JPanel,但这似乎不起作用 这就是我迄今为止所尝试的: public class GUIDisplayBooks extends JFrame{ JPanel panel = new JPanel(); JTextArea textArea

我试图在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);

    }

}
public类GUIDisplayBooks扩展JFrame{
JPanel面板=新的JPanel();
JTextArea textAreaIsbn=新的JTextArea();
JTextArea textAreaTitle=新的JTextArea();
JTextArea textarea name=新的JTextArea();
JTextArea textAreaForename=新的JTextArea();
JTextArea textAreaCategory=新的JTextArea();
JScrollPane scrollPane=新的JScrollPane(面板);
GUIDisplayBooks(arraylistbooks)
{
本条添加(面板);
这个.设置大小(600200);
此.setLocationRelativeTo(空);
此.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
为了(书:书){
textAreaIsbn.append(book.getIsbn()+“\n”);
textAreaTitle.append(book.getTitle()+“\n”);
text区域姓氏.append(book.getname()+“\n”);
textAreaForename.append(book.getForename()+“\n”);
textAreaCategory.append(book.getCategory()+“\n”);
}
panel.add(textAreaIsbn);
panel.add(textAreaTitle);
panel.add(text区域姓氏);
panel.add(textAreaForename);
panel.add(textAreaCategory);
添加(滚动窗格);
}
}

我一直得到一个空白的GUI窗口。也许这是非常明显的,任何帮助都可以使用布局。存在各种实现,您可以先看一看


具有水平方向的组件应该可以做到这一点。

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

JScrollPane scrollPane = new JScrollPane(panel);
我基本上也是这样:

JScrollPane scrollPane = new JScrollPane();
scrollPane.setViewportView(panel);
然后将相同的
面板添加到
JFrame

this.add(panel);
add(scrollPane);
这将从
JScrollPane
中删除它,然后将空的
JScrollPane
添加到
JFrame

this.add(panel);
add(scrollPane);
因此,删除这一行应该可以使您的程序正常工作:

this.add(panel);

你用的是什么布局?在何处使您的框架可见?1)以最小尺寸提供ASCII艺术或GUI预期布局的简单绘图,如果可以调整大小,则具有更大的宽度和高度,以显示应如何使用额外的空间。2) “我正在为数据库编写GUI,希望将每列的数据放在不同的JTextArea中。”这是
JTable
非常擅长的任务类型。不要试图重新发明轮子。了解如何使用表格。不要使用多个文本区域!。有关更好的解决方案,请参阅。
JPanel panel=new JPanel()
表示代码已经在使用
FlowLayout
。好的,非常感谢!我按照建议做了,效果很好。@117Halo如果答案解决了您的问题,请务必接受它,我还建议您考虑Andrew和camickr关于使用
JTable