<BR/>? \ n吗? java中的换行符

时间:2009-08-04 10:59:17

标签: java swing

我有三个JLabel和三个JTextAreas。我将它们放在borderlayout,center中,但是我希望它们中的每一个都在不同的行中,这种情况并没有发生,并且谷歌中用于换行符java的十大搜索结果都无法解决问题。我怎样才能做一个简单的换行?

4 个答案:

答案 0 :(得分:7)

如果这是一个Swing应用程序,您应该使用layout manager将字段放在容器中。

答案 1 :(得分:2)

换行符无助于放置Swing对象;你需要在中心JPanel上放置一个布局。也就是说,边框布局的中心应该是单个Swing对象,JPanel,您应该将其设置为允许您堆叠每个窗口小部件的样式。 GridLayout(6,1)可能会这样做。

答案 2 :(得分:2)

您可以使用GridLayoutGridBagLayout等布局管理器。即使后者只推荐用于GUI生成器生成的代码,我更喜欢它,因为它给了我最大的灵活性。

JPanel panel = new JPanel();
GridBagLayout layout = new GridBagLayout();
panel.setLayout(layout);
layout.add(label1, new GridBagConstraints(0, 0, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
layout.add(area1, new GridBagConstraints(1, 0, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
layout.add(label2, new GridBagConstraints(0, 1, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
layout.add(area2, new GridBagConstraints(1, 1, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
layout.add(label3, new GridBagConstraints(0, 2, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
layout.add(area3, new GridBagConstraints(1, 2, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
panel.add(label1);
panel.add(label2);
panel.add(label3);
panel.add(area1);
panel.add(area2);
panel.add(area3);

当然这看起来很丑,但应该让你开始。

您还可以滥用BorderLayout

JPanel panel = new JPanel(new BorderLayout());
JPanel topRow = new JPanel();
panel.add(topRow, BorderLayout.PAGE_START);
topRow.add(label1);
topRow.add(area1);
JPanel middleRowBox = new JPanel(new BorderLayout());
panel.add(middleRowBox, BorderLayout.CENTER);
JPanel middleRow = new JPanel();
middleRowBox.add(middleRow, BorderLayout.PAGE_START);
middleRow.add(label2);
middleRow.add(area2);
JPanel bottomRowBox = new JPanel();
middleRowBox.add(bottomRowBox, BorderLayout.CENTER);
JPanel bottomRow = new JPanel();
bottomRowBox.add(bottomRow, BorderLayout.PAGE_START);
bottomRow.add(label3);
bottomRow.add(area3);
bottomRowBix.add(new JPanel(), BorderLayout.CENTER);

答案 3 :(得分:1)

尝试使用GridLayout作为初学者:

panel.setLayout(new GridLayout(0,2));
// the order of added components is important
panel.add(labelA);
panel.add(textAreaA);
panel.add(labelB);
panel.add(textAreaB);
...

看起来不太漂亮,但它让你开始。

如果没有将LayoutManager设置为新面板,它将使用FlowLayout,其行为有点像HTML布局。但是在FlowLayout中没有预期的换行符。它只会将组件放在组件之后,直到它到达可用空间的末尾,然后开始一个新行 如果要控制布局 - 请勿使用FlowLayout。

您可能希望了解的布局管理器是:

  • BorderLayout - 非常好,如果你想要可调整内容
  • GridLayout - 简单等于宽度和高度网格
  • null - 允许您在每个组件上使用setBounds来获取绝对位置

还有更多,但这三个应该允许你布局95%的面板。