【发布时间】:2014-08-14 10:29:52
【问题描述】:
如果将新数据添加到数据库表中,我会尝试每 5 秒刷新一次 JEditorPane,但它不会重新绘制。
首先我有一个如下的 JFrame,它在构造函数中被调用
public Browser(String initialURL) {
this.initialURL = initialURL;
WindowUtilities.setNativeLookAndFeel();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
topPanel = new JPanel();
urlField = new JTextField(30);
getContentPane().add(topPanel, BorderLayout.NORTH);
try {
htmlPane = new JEditorPane(initialURL);
htmlPane.setEditable(false);
JScrollPane scrollPane = new JScrollPane(htmlPane);
scrollPane.setHorizontalScrollBarPolicy(HORIZONTAL_SCROLLBAR_NEVER);
getContentPane().add(scrollPane, BorderLayout.CENTER);
} catch(IOException ioe) {
warnUser("Can't build HTML pane for " + initialURL
+ ": " + ioe);
}
Dimension screenSize = getToolkit().getScreenSize();
setBounds(400, 300, 600, 400);
setVisible(true);
}
为了启动它,我创建了一个如下所示的单例类,并传递要加载的 xhtml 页面的 url,该页面从数据库中挑选数据。
public class BrowserInstance {
public static Browser browser ;
public static synchronized Browser getInstance(String serverpath)
{
if(browser == null)
{
browser = new Browser(serverpath);
}
else if(browser != null)
{
try {
browser.getHtmlPane().setEditable(false);
browser.setVisible(true);
browser.getHtmlPane().setPage(serverpath);
} catch (Exception e) {
e.printStackTrace();
}
}
return browser;
}
}
但由于某种原因,它不会在 popup 中刷新页面。我可以使用 ScheduledExecutorService 概念每 5 秒调用一次这个单例类,非常感谢您的帮助。
【问题讨论】:
标签: java swing executorservice jeditorpane