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

How can i add JLabel and JTextArea in the same space in JAVA

这是我想做的UI。

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

非常感谢。

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

话虽如此,我认为你真正想要的是一个TitledBorder,例如...

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);

这将大大简化您的布局,因为您只需要布置 wrapper 面板而不是标签和相关组件。

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

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

有关详细信息,请参阅 Laying Out Components Within a Container and How to Use Borders

String in the JTextArea clickable

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

类似于this for example