创建Java Swing应用程序的屏幕部分的最佳策略是什么,即每分钟用网页上的新信息重新绘制自己的屏幕? (例如雅虎股票报价) 谢谢。如何显示在Java桌面应用程序中每分钟重新加载自己的内容?
回答
1.创建一个与GUI线程分开的线程(即事件调度程序线程)。
2.让它调用给予雅虎股票以秒延迟60服务,使用Thread.sleep(60000);
呼叫repaint();
编辑:
new Thread(new Runnable(){
public void run(){
try{
while (true){
Thread.sleep(60000);
yahoo() // CALL TO YAHOO SENSEX
repaint();
}
}catch(Exception ex){
}
}).start();
使用Timer
与TimerTask
类定期做一些行动。并发送“更新”事件到你的应用程序的视图组件(以MVC标记)。
可能都在使用的最佳解决方案一个新的线程,即下载信息&重绘本身..
你可以开始为暴露在样品上的事件堆栈上的新Thread
并在此线程执行,你可以把事件下面。实现这种方式更安全,因为GUI更新将从事件派发线程中调用。更多信息here。
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
public class SpringcConc {
final static JLabel label = new JLabel("INITIALIZED ...");
public static void main(final String[] s) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame myJframe = new JFrame();
myJframe.add(label);
myJframe.pack();
myJframe.setVisible(true);
instituteThreads();
}
});
}
protected static void instituteThreads() {
Thread queryThread1 = new Thread() {
@Override
public void run() {
while (true) {
try {
sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
label.setText("THREAD 1 UPD");
}
});
}
}
};
queryThread1.start();
Thread queryThread2 = new Thread() {
@Override
public void run() {
while (true) {
try {
sleep(750);
} catch (InterruptedException e) {
e.printStackTrace();
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
label.setText("THREAD 2 UPD");
}
});
}
}
};
queryThread2.start();
}
}
另一种方法是使用Timer:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
public class SwingTimer {
public static void main(final String[] args) {
final JLabel label = new JLabel("INITIALIZED");
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame jFrame = new JFrame();
jFrame.add(label);
jFrame.pack();
jFrame.setVisible(true);
jFrame.setBounds(200, 200, 100, 50);
}
});
new Timer(500, new ActionListener() {
public void actionPerformed(final ActionEvent e) {
label.setText("UPDATE 1");
}
}).start();
new Timer(750, new ActionListener() {
public void actionPerformed(final ActionEvent e) {
label.setText("UPDATE 2");
}
}).start();
}
}
谢谢,我会试试看。 – skiabox 2012-07-07 19:43:48
我刚刚更新了示例,可以放入'run'方法。 – 2012-07-07 19:46:50
而不是一个单独的线程或java.util.Timer
,使用javax.swing.Timer
踱步更新您的数据模型,如图所示here。优点是“Swing定时器的任务在事件分派线程中执行”。
- 1. 在Rails应用程序中重新加载部分内容
- 2. 每隔一小时在(00分钟)和30分钟内重新加载页面
- 3. 如何在java中编写我自己的桌面共享应用程序?
- 4. 如何创建在桌面/背景上显示内容的Mac应用程序?
- 5. 如何自动每分钟重新加载一个网页?
- 6. 重新加载页面,如果在2分钟内空闲
- 7. 如何刷新/重新加载桌面
- 8. 如何创建Java桌面应用程序自动更新?
- 9. 在Java桌面应用程序中加载应用程序属性
- 10. 在后台桌面应用程序中重复显示图像
- 11. 显示内容Onclick无需重新加载/刷新页面
- 12. 如何显示每15分钟的随机内容 - php
- 13. 带桌面应用程序的java桌面应用程序
- 14. 在信标区域内每10分钟更新应用程序
- 15. Java桌面应用程序 - 内存
- 16. 如何让我的PHP页面每2分钟使用JavaScript重新加载?
- 17. jQuery - 如何使用load()每隔一分钟自动加载内容
- 18. 如何为我的桌面Java应用程序创建“自动更新程序”?
- 19. 在Java桌面应用程序中创建自己的脚本语言?
- 20. 如何在我的应用程序上显示桌面(跳板)?
- 21. 在后台5分钟内重新加载一次页面
- 22. 如何重新加载或刷新java中的jtree的内容
- 23. 自动更新桌面应用程序
- 24. 在开始页面显示自己的Windows 8应用程序
- 25. 加载程序内容无法在自定义分辨率中显示
- 26. Java桌面应用程序?
- 27. Java桌面应用程序
- 28. java桌面应用程序
- 29. 显示/隐藏内容不重新加载页面
- 30. 电子需要页面重新加载以显示内容
你能举一个小例子吗?Thnx。 – skiabox 2012-07-07 19:23:10
那么我在哪里放置这段代码?在主JFrame窗口内? – skiabox 2012-07-07 19:38:59
了java.awt.EventQueue.invokeLater(新的Runnable(){ 公共无效的run(){ 新的MainForm()调用setVisible(真);} }); – skiabox 2012-07-07 19:39:23