无论我使用哪种对齐方式,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);

最佳答案

choseTypeOfAnswerText.add(answerScroller, BorderLayout.CENTER);
必须将LayoutManger更改为BorderLayoutJPanel.setLayout(new BorderLayout())
JPanel已实现FlowLayout,与上午描述的问题相对应
默认情况下,只有Top-Level Containers已实现BorderLayout

10-04 11:58