Abrir uma URL dentro do jButton

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!