本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

JTextPane 适合底层 JPanel 和 JFrame

发布于2022-03-29 03:14     阅读(1172)     评论(0)     点赞(0)     收藏(5)


我有以下问题: 在此处输入图像描述

JTextPane在左边有一个充满内容的内容,它JTextPane被放入一个JScrollPane. ScrollPane被添加到BorderLayout.CENTERa中JPanel,并且这个结果JPanel被添加到BorderLayout.CENTER底层JFrame contentPane()中。

现在我想把它传播到JTextPane整个JFrame/JPanel. 我怎样才能做到这一点?

这是代码:

public class FinishPanelBuilder extends JPanel
{
  /**
   * Serial version UID.
   */
  private static final long serialVersionUID = 4373044358025740572L;
  private Model model;

  /**
   * Constructor to call if you want to build up a new finish panel.
   * 
   * @param model
   */
  public FinishPanelBuilder()
  {
    buildFinishPanel();
  }

  /**
   * Builds up the panel.
   */
  public void buildFinishPanel()
  {
    setLayout(new BorderLayout());

    JTextWrapPane textPaneResult = new JTextWrapPane(); 
    //This is my own class of JTextPane to wrap text
    StyledDocument document = textPaneResult.getStyledDocument();

    textPaneResult.setEditable(false);
    textPaneResult.setBackground(Color.white);
    textPaneResult.setFont(panelLabel.getFont());
    textPaneResult.setAutoscrolls(true);
    textPaneResult.setLineWrap(false);

    JScrollPane scrollPaneTestResult = new JScrollPane(textPaneResult);
    scrollPaneTestResult.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8));

    panelLabel.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8));
    setBorder(BorderFactory.createEtchedBorder());
    add(panelLabel, BorderLayout.PAGE_START);
    add(scrollPaneTestResult, BorderLayout.CENTER);
  }
}

这个完整的代码由

JFrame frame = new JFrame(); 
frame.add(new FinishPanelBuilder();

解决方案


好的,我又这样做了,没关系。我不知道为什么。我认为这是一个错误的方法getScrollableTracksViewportWidth()被覆盖的原因。



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.javaheidong.com/blog/article/408015/3b099a4d4008dee60e6d/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

0 0
收藏该文
已收藏

评论内容:(最多支持255个字符)