(Java) 尝试用 JPanel 中的其他元素格式化多个 JTable 的布局

(Java) Trying to format the layout of multiple JTables with other elements in a JPanel

我一直在 Java 开发一款以口袋妖怪为主题的问答游戏(如果您熟悉的话,可以仿照 Sporcle)。除了程序不同组件的布局外,几乎所有东西都按我想要的方式运行。

我对不同的布局管理器一直不是很好,我不知道如何让它们做我需要的事情。

这是 window 现在的样子:

现在,我稍后会调整字体大小,但表格本身看起来正是我想要的。问题是,我希望它们位于文本字段和按钮之类的下方。这是我将所有组件添加到我的 JPanel 的代码部分:

    panel.add(label,FlowLayout.LEFT); //adding the "big question text"
    panel.add(answerfield); //adding the JTextField
    panel.add(correctAnswerTracker); //adding the "x / 151" text
    for(int x = sPanes.length-1; x >=0; x--) //as you keep adding to left, it gets pushed over, so doing it backwards results in the correct order
    panel.add(sPanes[x],FlowLayout.LEFT); 
    //each table is in a scrollPane, and all my scrollPanes are in the array sPanes, so I'm looping through that to add the tables
    panel.add(startStopButton); //button that says "Start"
    panel.add(exit); //button that says "Exit
    panel.add(timer); //the timer

如您所见,添加文本字段和正确答案跟踪器的语句都写在表格的添加语句之前,而表格却在顶部。此外,该循环中的表存在以倒序添加的问题,因此我必须反转循环迭代的方向以使表以正确的顺序出现。我试过使用 setLocation 和 setBounds 之类的东西来让我的组件更多地出现在我想要的地方,但没有任何反应。此外,所有内容都显示在表格下方的一行中(我知道 FlowLayout 就是这样做的),但我将如何准确自定义显示内容的位置?

使用 LayoutManagersetLayout(null)。在后一种情况下,您可以通过调用 setBounds 来移动您的组件。我最近也一直在这样做(不使用 LayoutManager),它非常自由。

BorderLayout 将面板包裹在 FlowLayout 的面板周围。将所有应该在表格上方的内容放在一个面板中,并用 BorderLayout.NORTH 添加。将所有应该在表格下方的内容放在另一个面板中,并用 BorderLayout.SOUTH 添加。然后像现在一样将表格放在它们自己的面板中,并添加 BorderLayout.CENTER.