JAVA摆动JScrollPane中的多行标签

JAVA摆动JScrollPane中的多行标签,java,swing,jscrollpane,jlabel,multiline,Java,Swing,Jscrollpane,Jlabel,Multiline,我有一个JFrame,里面有JScrollPane。我把JPanel放在滚动窗格中。并在其中添加多行标签。 使用多行标签一切正常。我将我的文本放入。标记中。 标签显示其包装文本 “..”表示长多行文本 问题是,无用区域显示在底部 JFrame frame = new JFrame(); JPanel panel = new JPanel(); panel.setPreferredSize(new Dimension(300, 300)); panel.setLayout(new

我有一个
JFrame
,里面有JScrollPane。我把JPanel放在滚动窗格中。并在其中添加多行标签。 使用多行标签一切正常。我将我的文本放入
标记中。 标签显示其包装文本

“..”表示长多行文本

问题是,无用区域显示在底部

JFrame frame = new JFrame();        
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(300, 300));
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
JLabel label1 = new JLabel();
JLabel label2 = new JLabel();
label1.setText("<html>" + "..." + "</html>");
panel.add(label1);
label2.setText("<html>" + "..." + "</html>");
panel.add(label2);
JScrollPane scroll = new JScrollPane(panel);
scroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
frame.setContentPane(scroll);
frame.pack();
frame.setVisible(true);
JFrame=newjframe();
JPanel面板=新的JPanel();
面板。设置首选尺寸(新尺寸(300300));
panel.setLayout(新的BoxLayout(panel,BoxLayout.Y_轴));
JLabel label1=新的JLabel();
JLabel label2=新的JLabel();
标签1.setText(“+”..“+”);
面板。添加(标签1);
标签2.setText(“+”..“+”);
面板。添加(标签2);
JScrollPane scroll=新的JScrollPane(面板);
scroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HorizontalScrollBar\uNever);
frame.setContentPane(滚动);
frame.pack();
frame.setVisible(true);
编辑

因此,我必须为内部JPanel设置首选大小。之后,滚动窗格绘制其内容(显示滚动条),因为其内容具有固定的“内部面板首选大小”。 如果我不为面板设置首选大小,JLabels将不会包装文本

通过布局管理器进行布局后,内部面板的大小会增长,并变得比以前设置的首选大小更大。面板会自动增长,没问题,我看到标签的包装文本。但是scrollpane的行为不正确。它绘制卷轴,因为内面板仍然是预先指定的大小。因此,我需要正确调整JScrollPane的大小

  • 使用
    JTextPane或JEditorPane
    代替
    JPanel
    包含大量
    jlabel


  • JTextPane或JEditorPane
    支持手写文本或
    Html不需要样式化Html。主要目标是以一种漂亮的方式显示长文本。在调整整个帧的大小后,我遇到了JTextPane和JEditorPane重新绘制的问题。和解析行“\n\r”等。