1

无论我使用什么对齐方式,JLabel 总是显示在我的 JScrollpane 的左侧,而不是在它的顶部。这是代码:

final JPanel choseTypeOfAnswerText = new JPanel();
JLabel label = new JLabel("Answer:");

label.setHorizontalTextPosition(JLabel.CENTER);
label.setVerticalTextPosition(JLabel.TOP);
choseTypeOfAnswerText.add(label);

//now a scroll pane for the answer area
JScrollPane answerScroller = new JScrollPane(answerArea);
answerScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
answerScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
choseTypeOfAnswerText.add(answerScroller, BorderLayout.CENTER);
//add(answerScroller);
choseTypeOfAnswerText.setVisible(true);
4

3 回答 3

4
  • choseTypeOfAnswerText.add(answerScroller, BorderLayout.CENTER);

  • 必须更改LayoutMangerBorderLayout( JPanel.setLayout(new BorderLayout()))

  • JPanel已实施FlowLayout,与我描述的问题相对应

  • 仅默认Top-Level Containers实现BorderLayout

于 2012-11-08T11:52:16.820 回答
1

你忘了告诉,label应该添加在面板的顶部区域:

choseTypeOfAnswerText.add(label, BorderLayout.PAGE_START);

而且,就像 mKorbel 所说,您必须将 LayoutManager 设置为BorderLayout

于 2012-11-08T11:52:16.213 回答
0

如果你使用 aJScrollPane你不需要把它放在 a JPanel; 它实际上取代了 JPanel。您可以将标签添加到JScrollPane.

于 2012-11-08T11:52:42.247 回答