如何在 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
和可能的 BorderLayout
和 FlowLayout
发挥作用。
有关详细信息,请参阅 Laying Out Components Within a Container and How to Use Borders
String in the JTextArea clickable
这充其量是相当复杂的。如果您的意思是像超链接,那么我建议您对 JEditorPane
做一些研究,这会让它(稍微)更容易
类似于this for example
这是我想做的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
和可能的 BorderLayout
和 FlowLayout
发挥作用。
有关详细信息,请参阅 Laying Out Components Within a Container and How to Use Borders
String in the JTextArea clickable
这充其量是相当复杂的。如果您的意思是像超链接,那么我建议您对 JEditorPane
做一些研究,这会让它(稍微)更容易
类似于this for example