【问题标题】:prevent JTextArea's background image from stretching when getting scrolled down向下滚动时防止 TextArea 背景图像拉伸
【发布时间】:2019-10-16 09:03:44
【问题描述】:

我有一个带有背景图像的 JTextArea,它基本上显示了一些输出。问题是当附加输出并且 JTextArea 开始“自动滚动”向下时,背景图像也被拉伸了......有什么办法可以防止这种情况发生吗?

要绘制图像,我的 JTextArea 将覆盖 paintComponent,如下所示:

public void paintComponent(final Graphics g)
{
    try {
        g.drawImage(imageIcon.getImage(),0,0,getWidth(),getHeight(),this);
        super.paintComponent(g);
    } catch(Exception e) {
        e.printStackTrace();
    }
}

然后是滚动窗格:

DefaultCaret caret3 = (DefaultCaret)jTextArea2.getCaret();
caret3.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
jScrollPane5.setViewportView(jTextArea2);
new SmartScroller(jScrollPane5);

(SmartScroller类取自这里实现智能滚动 https://tips4java.wordpress.com/2013/03/03/smart-scrolling/)

有什么建议吗? 让我知道是否需要发布更多代码。

【问题讨论】:

  • 有没有办法在 jscrollpane 和图像之间放置一个带有布局管理器的 jpanel?

标签: java swing jscrollpane jtextarea


【解决方案1】:

您应该根据可见矩形显示图像。像这样的:

    @Override
    protected void paintComponent(Graphics g) {
        Rectangle rect = getVisibleRect();
        g.drawImage(image.getImage(), rect.x, rect.y, rect.width, rect.height, this);
        super.paintComponent(g);
    }

【讨论】:

    猜你喜欢
    • 2013-10-09
    • 2012-01-30
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多