Gostaria de saber como abrir uma url tipo http://www.google.com.br/ pelo jButton mas precisa funcionar tanto para o linux quanto para o windows.
Resumindo quando eu clicar no jButton ele tem que abrir o browser juntamente com a URL especificada.
Bom dia marcoamv3000,
Use a classe BareBonesBrowserLaunch ( http://www.centerkey.com/java/browser/ )
/////////////////////////////////////////////////////////
// Bare Bones Browser Launch //
// Version 1.5 (December 10, 2005) //
// By Dem Pilafian //
// Supports: Mac OS X, GNU/Linux, Unix, Windows XP //
// Example Usage: //
// String url = "http://www.centerkey.com/"; //
// BareBonesBrowserLaunch.openURL(url); //
// Public Domain Software -- Free to Use as You Like //
/////////////////////////////////////////////////////////
import java.lang.reflect.Method;
import javax.swing.JOptionPane;
public class BareBonesBrowserLaunch
{
private static final String errMsg = "Erro ao tentar abrir o browser";
public static void openURL(String url)
{
String osName = System.getProperty("os.name");
try
{
if (osName.startsWith("Mac OS"))
{
Class fileMgr = Class.forName("com.apple.eio.FileManager");
Method openURL = fileMgr.getDeclaredMethod("openURL",
new Class[] {String.class});
openURL.invoke(null, new Object[] {url});
}
else if (osName.startsWith("Windows"))
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
else
{ //assume Unix or Linux
String[] browsers = {
"firefox", "opera", "konqueror", "epiphany", "mozilla", "netscape" };
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];
if (browser == null)
throw new Exception("Navegador não encontrado!");
else
Runtime.getRuntime().exec(new String[] {browser, url});
}
}
catch (Exception e)
{
JOptionPane.showMessageDialog(null, errMsg + ":\n" + e.getLocalizedMessage());
}
}
}
E para usar, basta chamar o método openURL passando como parâmetro uma string contendo o endereço do site:
BareBonesBrowserLaunch.openURL("http://www.google.com.br");
Espero ter ajudado
att
Meu amigo muito obrigado mas apenas corrigindo um erro a chamada você pode fazer assim:
openURL("http://www.google.com.br");
E o mais interessante não precisa da biblioteca apenas o método que você me passou faz tudo certinho.
Agradeço muito pela ajuda.
Segue o código que usei para testar...
[code]
import java.lang.reflect.Method;
import javax.swing.JOptionPane;
public class NewJFrame extends javax.swing.JFrame {
public NewJFrame() {
initComponents();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}
private void initComponents() {
jButton1 = new javax.swing.JButton();
jTextField1 = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Página WEB");
jButton1.setText("Abrir Página WEB");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jTextField1.setText("http://www.google.com.br");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 216, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addGap(55, 55, 55)
.addComponent(jButton1)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
openURL(jTextField1.getText().trim());
}
private static final String errMsg = "Erro ao tentar abrir o browser";
public static void openURL(String url) {
String osName = System.getProperty("os.name");
String browser = null;
try {
if (osName.startsWith("Mac OS")) {
Class fileMgr = Class.forName("com.apple.eio.FileManager");
Method openURL = fileMgr.getDeclaredMethod("openURL",
new Class[]{String.class});
openURL.invoke(null, new Object[]{url});
} else if (osName.startsWith("Windows")) {
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
} else { //assume Unix or Linux
String[] browsers = {
"firefox", "opera", "konqueror", "epiphany", "mozilla", "netscape"
};
for (int count = 0; count < browsers.length && browser == null; count++) {
if (Runtime.getRuntime().exec(
new String[]{"which", browsers[count]}).waitFor() == 0) {
browser = browsers[count];
}
}
JOptionPane.showMessageDialog(null,browser);
if (browser == null) {
JOptionPane.showMessageDialog(null,"Navegador não encontrado!");
} else {
Runtime.getRuntime().exec(new String[]{browser,url});
}
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, errMsg + ":\n" + e.getLocalizedMessage());
}
}
public javax.swing.JButton jButton1;
public javax.swing.JTextField jTextField1;
}
[/code]
Meu amigo muito obrigado mas apenas corrigindo um erro a chamada você pode fazer assim:
openURL(“http://www.google.com.br”);
E o mais interessante não precisa da biblioteca apenas o método que você me passou faz tudo certinho.
Agradeço muito pela ajuda.
Segue o código que usei para testar…
import java.lang.reflect.Method;
import javax.swing.JOptionPane;
public class NewJFrame extends javax.swing.JFrame {
public NewJFrame() {
initComponents();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}
private void initComponents() {
jButton1 = new javax.swing.JButton();
jTextField1 = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Página WEB");
jButton1.setText("Abrir Página WEB");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jTextField1.setText("http://www.google.com.br");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 216, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addGap(55, 55, 55)
.addComponent(jButton1)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
openURL(jTextField1.getText().trim());
}
private static final String errMsg = "Erro ao tentar abrir o browser";
public static void openURL(String url) {
String osName = System.getProperty("os.name");
String browser = null;
try {
if (osName.startsWith("Mac OS")) {
Class fileMgr = Class.forName("com.apple.eio.FileManager");
Method openURL = fileMgr.getDeclaredMethod("openURL",
new Class[]{String.class});
openURL.invoke(null, new Object[]{url});
} else if (osName.startsWith("Windows")) {
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
} else { //assume Unix or Linux
String[] browsers = {
"firefox", "opera", "konqueror", "epiphany", "mozilla", "netscape"
};
for (int count = 0; count < browsers.length && browser == null; count++) {
if (Runtime.getRuntime().exec(
new String[]{"which", browsers[count]}).waitFor() == 0) {
browser = browsers[count];
}
}
JOptionPane.showMessageDialog(null,browser);
if (browser == null) {
JOptionPane.showMessageDialog(null,"Navegador não encontrado!");
} else {
Runtime.getRuntime().exec(new String[]{browser,url});
}
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, errMsg + ":\n" + e.getLocalizedMessage());
}
}
public javax.swing.JButton jButton1;
public javax.swing.JTextField jTextField1;
}
Bom dia marcoamv3000 ,
[quote]
Meu amigo muito obrigado mas apenas corrigindo um erro a chamada você pode fazer assim:
Eu sugeri você fazer a chamada assim:
Porque eu pensei que você fosse adicionar no seu projeto a classe que eu postei. Mas se você quiser apenas copiar o método, pode fazer.
Acho interessante adicionar a classe para prestigiar quem realmente a implementou. Mas isso é uma escolha sua.
Att
marcoamv3000, valeu pelo código. utilizei em um projeto!!!
:shock: :shock: :shock:
Está usando o Java 6?
Usei o caminho completo das classes Desktop e URI para você saber em quais pacotes elas estão.
[]´s
David
Utilizei sua dica para abrir a URL através do getDesktop, porém preciso colocar na miha aplicação as seguintes funcionalidades:
1- abrir a URL e preencher alguns campos desta pagina como LOGIN E SENHA, escolher opções do menu como se fosse um ‘dataloader’, ou seja navegar mesmo na página através da aplicação.
2 - executar um aplicativo, que na verdade é um emulador de terminais (IWW da Receita Federal) e popular os campos e navegar pelo emulador
Vc conhece alguma ferramenta do JAVA que posso usar ou de que maneira posso fazer isso?
Valeu.
Valeu pelo código!