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

时间:2015-02-04 23:03:27

标签: java swing jpanel layout-manager jtextarea

以下是我想要制作的用户界面。

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

非常感谢。

1 个答案:

答案 0 :(得分:2)

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

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

Border

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,可能BorderLayoutFlowLayout正在发挥作用。

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

  

JTextArea可点击的字符串

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

this for example

这样的东西