JLabel位于JScrollpane之上

时间:2012-11-08 11:46:37

标签: java swing user-interface jscrollpane jlabel

无论我使用什么样的对齐方式,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);

3 个答案:

答案 0 :(得分:4)

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

  • 必须将LayoutManger更改为BorderLayoutJPanel.setLayout(new BorderLayout())

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

  • 默认情况下Top-Level Containers仅实施BorderLayout

答案 1 :(得分:1)

你忘了说,label应该被添加到面板的顶部区域:

choseTypeOfAnswerText.add(label, BorderLayout.PAGE_START);

并且,与mKorbel一样,您必须将LayoutManager设置为BorderLayout

答案 2 :(得分:0)

如果您使用JScrollPane,则无需将其放入JPanel;它实际上取代了JPanel。您可以将标签添加到JScrollPane