Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.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 如何在JPanel上定位/布置组件?_Java_Swing_Layout Manager_Boxlayout - Fatal编程技术网

Java 如何在JPanel上定位/布置组件?

Java 如何在JPanel上定位/布置组件?,java,swing,layout-manager,boxlayout,Java,Swing,Layout Manager,Boxlayout,我试着在JFrame上放置5个按钮。四个按钮应位于第一行,第五个按钮应位于第二行。但在这里,所有按钮都显示在一行中,第五个按钮的一半在面板外。顺便说一下,如果我使用frame.pack();我的身躯比我想象的要小。我不想改变框架的大小。我想找到第二排的第五个 import java.awt.GridBagLayout; import java.awt.GridLayout; import javax.swing.*; public class test { public stat

我试着在JFrame上放置5个按钮。四个按钮应位于第一行,第五个按钮应位于第二行。但在这里,所有按钮都显示在一行中,第五个按钮的一半在面板外。顺便说一下,如果我使用frame.pack();我的身躯比我想象的要小。我不想改变框架的大小。我想找到第二排的第五个

import java.awt.GridBagLayout;
import java.awt.GridLayout;

import javax.swing.*;


public class test {

    public static void main(String[] args) {


        JFrame frame = new JFrame();
        frame.setBounds(100, 100, 529, 300);
        frame.getContentPane().setLayout(new GridLayout(1, 0, 0, 0));


        JPanel panel = new JPanel();
        frame.getContentPane().add(panel);
        panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));


        JButton btnNewButton_4 = new JButton("New button");
        panel.add(btnNewButton_4);

        JButton btnNewButton_3 = new JButton("New button");
        panel.add(btnNewButton_3);

        JButton btnNewButton = new JButton("New button");
        panel.add(btnNewButton);

        JButton btnNewButton_1 = new JButton("New button");
        panel.add(btnNewButton_1);

        JButton btnNewButton_2 = new JButton("New button");
        panel.add(btnNewButton_2);


        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


    }

}
四个按钮应位于第一行,第五个按钮应位于第一行 第二排

import java.awt.GridBagLayout;
import java.awt.GridLayout;

import javax.swing.*;


public class test {

    public static void main(String[] args) {


        JFrame frame = new JFrame();
        frame.setBounds(100, 100, 529, 300);
        frame.getContentPane().setLayout(new GridLayout(1, 0, 0, 0));


        JPanel panel = new JPanel();
        frame.getContentPane().add(panel);
        panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));


        JButton btnNewButton_4 = new JButton("New button");
        panel.add(btnNewButton_4);

        JButton btnNewButton_3 = new JButton("New button");
        panel.add(btnNewButton_3);

        JButton btnNewButton = new JButton("New button");
        panel.add(btnNewButton);

        JButton btnNewButton_1 = new JButton("New button");
        panel.add(btnNewButton_1);

        JButton btnNewButton_2 = new JButton("New button");
        panel.add(btnNewButton_2);


        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


    }

}
  • Oracle教程中关于

  • 用于JPanel,但所有JButton将具有相同的维度

  • 使用,则每个JButton的大小都会有所不同

  • 不可见的JComponents或空JLabel可以帮助您处理最复杂的变体

四个按钮应位于第一行,第五个按钮应位于第一行 第二排

import java.awt.GridBagLayout;
import java.awt.GridLayout;

import javax.swing.*;


public class test {

    public static void main(String[] args) {


        JFrame frame = new JFrame();
        frame.setBounds(100, 100, 529, 300);
        frame.getContentPane().setLayout(new GridLayout(1, 0, 0, 0));


        JPanel panel = new JPanel();
        frame.getContentPane().add(panel);
        panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));


        JButton btnNewButton_4 = new JButton("New button");
        panel.add(btnNewButton_4);

        JButton btnNewButton_3 = new JButton("New button");
        panel.add(btnNewButton_3);

        JButton btnNewButton = new JButton("New button");
        panel.add(btnNewButton);

        JButton btnNewButton_1 = new JButton("New button");
        panel.add(btnNewButton_1);

        JButton btnNewButton_2 = new JButton("New button");
        panel.add(btnNewButton_2);


        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


    }

}
  • Oracle教程中关于

  • 用于JPanel,但所有JButton将具有相同的维度

  • 使用,则每个JButton的大小都会有所不同

  • 不可见的JComponents或空JLabel可以帮助您处理最复杂的变体


您使用的是BoxLayout,其中的组件不会被包装(请查看API文档:)


关于尺寸,请尝试使用panel.setMinimumSize(尺寸d)

您使用的是一个BoxLayout,其中组件不会包装(请查看API文档:)


关于尺寸,请尝试使用panel.setMinimumSize(维度d)

我所做的是使用null作为布局管理器,并自行放置组件。如果希望在调整窗口大小时中继组件,或者不知道小程序的最终大小,则管理器可以正常工作

但大多数情况下,这并不是真的,或者说是过度杀戮

相反,只需使用像素将组件放置在网格上 立根(x、y、宽度、高度); 例如:

样本


我要做的是使用null作为布局管理器,并自行放置组件。如果希望在调整窗口大小时中继组件,或者不知道小程序的最终大小,则管理器可以正常工作

但大多数情况下,这并不是真的,或者说是过度杀戮

相反,只需使用像素将组件放置在网格上 立根(x、y、宽度、高度); 例如:

样本


您还可以使用setBounds(arg1、arg2、arg3、arg4)方法。用这个来获得更好的帮助

也可以使用setBounds(arg1、arg2、arg3、arg4)方法。用这个来获得更好的帮助

你说的“定位”真的是指“设置”他们的位置吗?当我第一次读到你的标题时,我以为你在试图找到它们。你说的“定位”是指“设置它们的位置”吗?当我第一次读到你的标题时,我以为你在试图找到它们。请不要建议
null
layout;例如,在某些平台上,不可调整大小的组件几乎肯定会看起来很糟糕。这就是一个例子。已在其他地方成功使用。更新样本请不要建议
null
layout;例如,在某些平台上,不可调整大小的组件几乎肯定会看起来很糟糕。这就是一个例子。已在其他地方成功使用。更新了一个样本