Java JPanels:一个带有JTextArea,另一个带有JLabel

Java JPanels:一个带有JTextArea,另一个带有JLabel,java,swing,user-interface,layout,layout-manager,Java,Swing,User Interface,Layout,Layout Manager,我做这件事已经有好一阵子了,但我似乎无法控制它。我试图生成一个JPanel,上面有一个JTextArea,下面有两个JLabel,但我的JLabel最终位于JTextArea的左侧,我无法使另一个出现 这是我的代码(对于显示内容很抱歉-真的只是填充): 请向所有愿意花时间帮助您的人表示感谢。当您创建某个东西时,您不需要指定任何布局管理器,但稍后您会尝试使用BorderLayout常量向某个东西添加布局管理器,这将不起作用,因为JPanel的默认布局管理器是FlowLayout 试试这个 JPan

我做这件事已经有好一阵子了,但我似乎无法控制它。我试图生成一个JPanel,上面有一个JTextArea,下面有两个JLabel,但我的JLabel最终位于JTextArea的左侧,我无法使另一个出现

这是我的代码(对于显示内容很抱歉-真的只是填充):

请向所有愿意花时间帮助您的人表示感谢。

当您创建某个东西时,您不需要指定任何布局管理器,但稍后您会尝试使用BorderLayout常量向某个东西添加布局管理器,这将不起作用,因为JPanel的默认布局管理器是FlowLayout

试试这个

JPanel something = new JPanel(new BorderLayout());
当您创建一些东西时,您不会指定任何布局管理器,但稍后您会尝试使用BorderLayout常量将其添加到一些东西中——这将不起作用,因为JPanel的默认布局管理器是FlowLayout

试试这个

JPanel something = new JPanel(new BorderLayout());

您使用的是哪个版本的JDK?@masterX244 7.4我相信。您使用的是哪个版本的JDK?@masterX244 7.4我相信。或者,您可以使用GridLayout(),它可以让您在网格中布局任何元素:GridLayout很好,只要您希望面板中的所有组件具有完全相同的大小。当您开始混合大小并希望有不同的动态(例如,一些可能水平缩放,另一些垂直缩放,锚定向北,一些应该拉伸,等等)时,您需要更改为GridBagLayout,这是我目前使用的最“通用”的布局管理器。@Markus Millfjord它起作用了,但是现在我的jlabel出现在中间,而不是在东方和西方。我还遗漏了什么?嗯,BorderLayout可能不是这里的最佳选择,因为它只显示实际添加的组件。而且,不同的地方(北部、中部、南部等)对其组件的处理都不同;中心组件水平和垂直拉伸,而北部和南部仅水平拉伸。在您的例子中,您将标签分成两部分,并尝试将其大小设置为(50,50),然后将两部分放置在某物的南部。要强制标签向东和向西,您需要在两个中间添加一个虚拟组件,并使用两个的setSizeFurther。此外,如果使用布局管理器,则根本不应该尝试设置位置。因此,如果您想要一种快速的n-dirty方法,即仅以您指定的方式显示组件(因为您使用了setLocation和setSize),那么您可以将某物的布局管理器设置为null,从而允许您在像素级手动放置。我个人不喜欢不使用布局管理器,但我想这一切都取决于您想要做什么以及最终应用程序需要多大的动态性这将允许您在网格中布局任何元素:GridLayout很好,只要您希望面板中的所有组件具有完全相同的大小。当您开始混合大小并希望有不同的动态(例如,一些可能水平缩放,另一些垂直缩放,锚定向北,一些应该拉伸,等等)时,您需要更改为GridBagLayout,这是我目前使用的最“通用”的布局管理器。@Markus Millfjord它起作用了,但是现在我的jlabel出现在中间,而不是在东方和西方。我还遗漏了什么?嗯,BorderLayout可能不是这里的最佳选择,因为它只显示实际添加的组件。而且,不同的地方(北部、中部、南部等)对其组件的处理都不同;中心组件水平和垂直拉伸,而北部和南部仅水平拉伸。在您的例子中,您将标签分成两部分,并尝试将其大小设置为(50,50),然后将两部分放置在某物的南部。要强制标签向东和向西,您需要在两个中间添加一个虚拟组件,并使用两个的setSizeFurther。此外,如果使用布局管理器,则根本不应该尝试设置位置。因此,如果您想要一种快速的n-dirty方法,即仅以您指定的方式显示组件(因为您使用了setLocation和setSize),那么您可以将某物的布局管理器设置为null,从而允许您在像素级手动放置。我个人不喜欢不使用布局管理器,但我想这取决于您想要做什么以及最终应用程序需要多大的动态性。