向下滚动时防止 TextArea 背景图像拉伸
prevent JTextArea's background image from stretching when getting scrolled down
我有一个带有背景图像的 JTextArea,基本上可以显示一些输出。问题是当输出被追加并且 JTextArea 开始变得 "auto-scrolled" 时,背景图像也被拉伸...有什么办法可以防止这种情况发生吗?
为了绘制图像,我的 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 class取自这里实现智能滚动
https://tips4java.wordpress.com/2013/03/03/smart-scrolling/ )
有什么建议吗?
让我知道是否需要发布任何进一步的代码。
您应该根据可见矩形显示图像。像这样:
@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);
}
我有一个带有背景图像的 JTextArea,基本上可以显示一些输出。问题是当输出被追加并且 JTextArea 开始变得 "auto-scrolled" 时,背景图像也被拉伸...有什么办法可以防止这种情况发生吗?
为了绘制图像,我的 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 class取自这里实现智能滚动 https://tips4java.wordpress.com/2013/03/03/smart-scrolling/ )
有什么建议吗? 让我知道是否需要发布任何进一步的代码。
您应该根据可见矩形显示图像。像这样:
@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);
}