如何在JAVA中的同一空间中添加JLabel和JTextArea

如何在JAVA中的同一空间中添加JLabel和JTextArea,java,swing,jpanel,layout-manager,jtextarea,Java,Swing,Jpanel,Layout Manager,Jtextarea,这是我想要制作的UI 我不熟悉UI设计。谁能告诉我应该使用哪种布局?如何使JLabel和JTextArea粘在一起,并使JTextArea中的字符串可单击?有没有更好的方法来实现这个设计。 我尝试过BorderLayout,但似乎无法将JLabel和JTextArea添加到同一个位置 非常感谢。通常,一个复杂的UI将由一系列复合组件和布局组成,每个组件和布局都专注于特定的责任领域。这使生活变得更加轻松,因为您只关注一个小区域,而不必担心它会如何影响不相关的元素 话虽如此,我想你真正想要的是一个

这是我想要制作的UI

我不熟悉UI设计。谁能告诉我应该使用哪种布局?如何使JLabel和JTextArea粘在一起,并使JTextArea中的字符串可单击?有没有更好的方法来实现这个设计。 我尝试过BorderLayout,但似乎无法将JLabel和JTextArea添加到同一个位置


非常感谢。

通常,一个复杂的UI将由一系列复合组件和布局组成,每个组件和布局都专注于特定的责任领域。这使生活变得更加轻松,因为您只关注一个小区域,而不必担心它会如何影响不相关的元素

话虽如此,我想你真正想要的是一个
标题边框
,例如

JTextArea ta = new JTextArea(20, 20);
JScrollPane sp = new JScrollPane(ta);
JPanel wrapper = new JPanel(new BorderLayout());
wrapper.setBorder(new TitledBorder("Details"));
wrapper.add(sp);

这将大大简化布局,因为您只需要布局
包装器
面板,而不需要布局标签和相关组件

这里的缺点是您确实丢失了
JLabel
可以提供的键盘快捷键功能,但是您可以使用相同的想法(包装组件)将
JLabel
和相关组件包装到易于使用的包中

根据您选择的路线,我会看到
GridBagLayout
和可能的
BorderLayout
FlowLayout
发挥作用

有关详细信息,请参阅和

JTextArea中的字符串可单击

这充其量也相当复杂。如果你的意思是像一个超链接,那么我建议你对一个
JEditorPane
做一些研究,这会使它(稍微)更容易


类似于

的内容我们可以查看您的代码吗?我不知道你说的是画面的哪一部分。你是说最顶层吗?“有人能告诉我应该使用哪种布局吗?”GUI很少只使用一种布局。通常,我们“分而治之”一个GUI——使用最适合每个部分的任何布局。话虽如此,我可能会使用一个
GridBagLayout
作为GUI。我主要看到
GridBagLayout
,但我想你真正想知道的是,如何使用
titleBorder
,有关更多详细信息,请参阅我在这里看到的问题不止一个。非常感谢你的评论。在我的示例中,在类边界下有5个类名称,如果我单击一个类名,它会在属性边界中显示Attributes的名称?假设属性名称已经在字符串[]中。对于每个textArea,我必须创建一个具有标题border的特定JPanel来包含它?它将提供最佳外观,因为否则您将修改滚动窗格的边框,这可能看起来很奇怪。似乎我应该使用JList而不是JTextArea,所以我必须先设置面板大小,然后动态添加JList?