Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java swt或swing中的边框布局_Java_Swing_Layout_Swt_Border Layout - Fatal编程技术网

Java swt或swing中的边框布局

Java swt或swing中的边框布局,java,swing,layout,swt,border-layout,Java,Swing,Layout,Swt,Border Layout,我想安排组件如图所示。我可以使用gridbaglayout来实现这一点,但我想使用borderlayout来实现这一点。我试过了,但没能达到我想要的。所以请带我到这里。 这里的黑色矩形是JPanel、Button等组件 边框布局不是这样的。这是边框布局示意图: 您将无法将东部布局放置到右上角-北部将始终浮动到右侧 编辑:显示我使用Swing或AWT-back已经有多长时间了。当我使用Swing或AWT-back时,它是东、北、西、南和中。边界布局不是这样工作的。这是边框布局示意图: 您将无法将东

我想安排组件如图所示。我可以使用gridbaglayout来实现这一点,但我想使用borderlayout来实现这一点。我试过了,但没能达到我想要的。所以请带我到这里。 这里的黑色矩形是JPanel、Button等组件


边框布局不是这样的。这是边框布局示意图:

您将无法将东部布局放置到右上角-北部将始终浮动到右侧


编辑:显示我使用Swing或AWT-back已经有多长时间了。当我使用Swing或AWT-back时,它是东、北、西、南和中。

边界布局不是这样工作的。这是边框布局示意图:

您将无法将东部布局放置到右上角-北部将始终浮动到右侧


编辑:显示我使用Swing或AWT-back已有多长时间了。当我使用Swing或AWT-back时,它是东、北、西、南和中。

如果你只想使用BorderLayout,你需要使用2个BorderLayout。如果不能使用2个布局,那么就只能使用GridBagLayout。 这是我所说的一个例子:

import java.awt.BorderLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class Test {

    protected void initUI() {
        JFrame frame = new JFrame("test");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel = new JPanel(new BorderLayout());
        JPanel panel2 = new JPanel(new BorderLayout());
        panel2.add(new JButton("NORTH"), BorderLayout.NORTH);
        panel2.add(new JButton("CENTER"));
        panel.add(panel2);
        panel.add(new JButton("SOUTH"), BorderLayout.SOUTH);
        panel.add(new JButton("EAST"), BorderLayout.EAST);
        frame.add(panel);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                new Test().initUI();
            }
        });
    }
}

如果只想使用BorderLayout,则需要使用2 BorderLayout。如果不能使用2个布局,那么就只能使用GridBagLayout。 这是我所说的一个例子:

import java.awt.BorderLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class Test {

    protected void initUI() {
        JFrame frame = new JFrame("test");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel = new JPanel(new BorderLayout());
        JPanel panel2 = new JPanel(new BorderLayout());
        panel2.add(new JButton("NORTH"), BorderLayout.NORTH);
        panel2.add(new JButton("CENTER"));
        panel.add(panel2);
        panel.add(new JButton("SOUTH"), BorderLayout.SOUTH);
        panel.add(new JButton("EAST"), BorderLayout.EAST);
        frame.add(panel);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                new Test().initUI();
            }
        });
    }
}

东部、北部、西部、南部和中部仍然是valid@a_horse_with_no_name:它们是有效的,但从Java 1.4开始就不鼓励使用它们,在JDK 1.4版之前声明,不同区域的首选名称是不同的,例如指南针点,BorderLayout.NORTH的顶部区域是我们在示例中使用的常量的更详细版本。我们的示例使用的常量是首选的,因为它们是标准的,使程序能够适应具有不同方向的语言。东、北、西、南和中仍然是valid@a_horse_with_no_name:它们是有效的,尽管在JDK 1.4版之前声明,不同区域的首选名称不同,从指南针的点(例如,顶部区域的BorderLayout.NORTH)到我们在示例中使用的常量的更详细版本。我们的示例使用的常量是首选的,因为它们是标准的,使程序能够适应具有不同方向的语言。@Guillaume Polet:谢谢这个好例子。@Guillaume Polet:谢谢这个好例子。