以下是我想要制作的用户界面。
我是UI设计的新手。谁能告诉我应该使用哪种布局?如何使JLabel和JTextArea粘在一起并使JTextArea中的String可单击?是否有更好的方法来实现这种设计。 我试过BorderLayout,但似乎我不能将JLabel和JTextArea一起添加到同一个地方。
非常感谢。
答案 0 :(得分:2)
通常,复杂的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
面板而不是标签AND关联组件。
这里的缺点是你失去了JLabel
可以提供的键盘快捷键功能,但你可以使用(包装器组件的)相同的想法将JLabel
和相关组件包装成一个简单的组件使用包。
根据您选择的路线,我会看到GridBagLayout
,可能BorderLayout
和FlowLayout
正在发挥作用。
有关详细信息,请参阅Laying Out Components Within a Container和How to Use Borders
JTextArea可点击的字符串
这充其量是相当复杂的。如果您的意思是超链接,那么我建议对JEditorPane
进行一些研究,这会使(稍微)更容易