米格布局不良行为

MiG Layout bad behavior

如果这是一个愚蠢的问题,我很抱歉,但我找不到这个问题的答案。我正在尝试为我的 java 程序制作简单的登录页面。它包含 JLayeredPane 设置和登录。还有一个 JSplitPane,它包含两个 JSrollpane consolepanel 和 changelogpanel。所以问题是我添加了 JSplitPane 和 Settings layeredpane 但是当我添加登录 layeredpane 时它​​与它所属的 settingspanel 在同一行,但它也紧挨着 splitpane 所以它看起来像这样:

[----]
[-]...[-]

应该是:

[----]
[-][-]

Here is screenshot

Main.java

package Main;

import javax.swing.JFrame;

import Development.Version;
import GameEngine.GameEngine;

public class Main {

     private static String title = "2D SquareWorld 0.";

     private static JFrame window;

     public static void main(String[] args) {

          GameEngine game = new GameEngine();

          window = new JFrame();

          window.setTitle("2D SquareWorld 0." + Version.newVersion());
          window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          window.setResizable(false);
          window.add(game);
          window.add(new GUI());
          window.pack();
          window.setSize(1000, 720);
          window.setLocationRelativeTo(null);
          window.setVisible(true);

    }

}

GUI.java

package Main;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextField;
import javax.swing.JTextPane;

import net.miginfocom.swing.MigLayout;

public class GUI extends JPanel {

    private static final long serialVersionUID = 1L;

    private JSplitPane Splitpanel;
    private JScrollPane consolepanel, changelogpanel;
    private JPasswordField password;
    private JLabel usernametext, passwordtext;
    private JButton update, register, login;
    private JCheckBox keepLogged;
    private JTextField username, server;
    private JTextPane console, changelog;
    private JLayeredPane loginlayer, settingslayer;

    public GUI() {

        setLayout(new MigLayout());

        settingslayer = new JLayeredPane();
        settingslayer.setBorder(BorderFactory.createTitledBorder(""));

        loginlayer = new JLayeredPane();
        loginlayer.setBorder(BorderFactory.createTitledBorder(""));

        username = new JTextField();

        password = new JPasswordField();

        usernametext = new JLabel("Username:");

        passwordtext = new JLabel("Password:");

        update = new JButton("Update");

        register = new JButton("Register");

        login = new JButton("Login");

        keepLogged = new JCheckBox("Keep me logged in");

        server = new JTextField();
        server.setEditable(false);
        server.setText("jdbc:mysql://sql4.freemysqlhosting.net");

        loginlayer.add(server);
        loginlayer.add(keepLogged);
        loginlayer.add(login);
        loginlayer.add(update);
        loginlayer.add(register);
        loginlayer.add(usernametext);
        loginlayer.add(passwordtext);
        loginlayer.add(username);
        loginlayer.add(password);

        console = new JTextPane();
        console.setContentType("text/html");
        console.setEditable(false);
        console.setText("<center><h1><u>Console:</u></h1></center>");

        changelog = new JTextPane();
        changelog.setContentType("text/html");
        changelog.setEditable(false);
        changelog.setText("<center><h1><u>Changelog:</u></h1></center>");

        consolepanel = new JScrollPane(console);
        consolepanel.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        consolepanel.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

        changelogpanel = new JScrollPane(changelog);
        changelogpanel.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        changelogpanel.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

        Splitpanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, consolepanel, changelogpanel);
        Splitpanel.setOneTouchExpandable(true);
        Splitpanel.setDividerLocation(480);

        add(Splitpanel, "w 100%, h 80%, wrap");
        add(settingslayer, "w 50%, h 20%");
        add(loginlayer, "w 50%, h 20%");

    }

}

对不起我的英语不好。这是我在 Whosebug 中的第一个问题,所以如果我做错了什么,请告诉我。感谢您的帮助!

add(Splitpanel, "w 100%, h 80%, wrap");

应该是

add(Splitpanel, "w 100%, h 80%, spanx, wrap");