猿问

防止 JTextArea 的背景图像在向下滚动时拉伸

我有一个带有背景图像的 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/)


有什么建议 ?如果需要发布任何进一步的代码,请告诉我。


阿晨1998
浏览 82回答 1
1回答

烙印99

您应该根据可见矩形显示图像。像这样的东西:    @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);    }
随时随地看视频慕课网APP

相关分类

Java
我要回答