【发布时间】:2014-04-11 11:01:48
【问题描述】:
我正在尝试制作一个允许您导航到网页的功能。我可以如何运行该功能,我只是不知道如何编写访问网页的程序部分。这是我用来通过 JButton 访问函数的代码。我希望该程序可以在多个平台上运行。我找到的所有解决方案,要么我理解得不够好,无法根据我的需要进行修改,要么它不是多平台的。
public static void main(String[] args) {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
JButton google = new JButton("Google");
linux.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
openURL("http://www.google.com/");
}
} );
JButton stackoverflow = new JButton("Stackoverflow");
JButton blah = new JButton("blah");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel.add(linux);
panel.add(osx);
panel.add(windows);
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
}
是的,我知道最后两个按钮什么也没做。
这是我迄今为止尝试过的:
public static void openURL(String url) {
String osName = System.getProperty("os.name");
try {
if (osName.startsWith("Windows"))
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
else {
String[] browsers = {"firefox", "opera", "konqueror", "epiphany", "mozilla", "netscape", "chrome" };
String browser = null;
for (int count = 0; count < browsers.length && browser == null; count++)
if (Runtime.getRuntime().exec(new String[] {"which", browsers[count]}).waitFor() == 0)
browser = browsers[count];
Runtime.getRuntime().exec(new String[] {browser, url});
}
}
catch (Exception e) {
JOptionPane.showMessageDialog(null, "Error in opening browser" + ":\n" + e.getLocalizedMessage());
}
}
不幸的是,我不明白这是做什么的,或者如何根据我的需要进行更改。
如果可能,您能否解释一下您的解决方案,以便我了解它的工作原理?谢谢。
【问题讨论】:
-
How to integrate with the Desktop class,这里有你想要的例子
-
@chrylis 我需要它在所有平台上工作。这仅适用于 Ubuntu 和 Windows,不适用于 OSX。