一个界面,上面有其他按钮,以及一个用jviewport来滚动显示内容的jpanel.当jpanel的内容显示到最后的时候,这个时候鼠标移至界面上的其他按钮(有mouseover事件响应),jviewport的显示就出现抖动,显示的内容又跳到最开始。
不知道有没有人碰到这个问题?
jviewport部分代码
public class ... extends JPanel
private Point anchor;
//private JLabel label = new JLabel("");
private JViewport window = new JViewport();
private JPanel allnewsLabel = new JPanel();
private Timer shownewsTimer = new Timer();
private TimerTask shownewsTask;
private Timer getnewsTimer=new Timer();
private TimerTask getnewsTask;
window.setView(allnewsLabel);
window.setScrollMode(JViewport.SIMPLE_SCROLL_MODE);
window.setOpaque(false);
this.add(window);
anchor = new Point();
anchor.x = -window.getExtentSize().width;
shownewsTask=new TimerTask(){
public void run(){
animate();
}
};
getnewsTask=new TimerTask(){ //jpanel内容
public void run(){
getNews();
}
};
getnewsTimer.schedule(getnewsTask, 0, 300000);
shownewsTimer.schedule(shownewsTask, 0, 200);
private void animate()
{
Dimension extSize = window.getExtentSize();
Dimension viewSize = allnewsLabel.getPreferredSize();
anchor.x += 6;//设置移动的速度
window.setViewPosition(anchor);
if (anchor.x > viewSize.width) {
anchor.x = -extSize.width;
}
}
不知道有没有人碰到这个问题?
jviewport部分代码
public class ... extends JPanel
private Point anchor;
//private JLabel label = new JLabel("");
private JViewport window = new JViewport();
private JPanel allnewsLabel = new JPanel();
private Timer shownewsTimer = new Timer();
private TimerTask shownewsTask;
private Timer getnewsTimer=new Timer();
private TimerTask getnewsTask;
window.setView(allnewsLabel);
window.setScrollMode(JViewport.SIMPLE_SCROLL_MODE);
window.setOpaque(false);
this.add(window);
anchor = new Point();
anchor.x = -window.getExtentSize().width;
shownewsTask=new TimerTask(){
public void run(){
animate();
}
};
getnewsTask=new TimerTask(){ //jpanel内容
public void run(){
getNews();
}
};
getnewsTimer.schedule(getnewsTask, 0, 300000);
shownewsTimer.schedule(shownewsTask, 0, 200);
private void animate()
{
Dimension extSize = window.getExtentSize();
Dimension viewSize = allnewsLabel.getPreferredSize();
anchor.x += 6;//设置移动的速度
window.setViewPosition(anchor);
if (anchor.x > viewSize.width) {
anchor.x = -extSize.width;
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货