无论我使用什么样的对齐方式,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);
答案 0 :(得分:4)
choseTypeOfAnswerText.add(answerScroller, BorderLayout.CENTER);
必须将LayoutManger
更改为BorderLayout
(JPanel.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
。