在JButton上添加和打开链接

时间:2013-11-04 16:04:40

标签: java swing

我正在编写一个简单的JFrame / Application,它打开一个带有一些简单按钮的applet。 我希望这些按钮能够在点击时打开某些网页/链接。

代码:

package me.jamplifier;

import java.awt.Desktop;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

import javax.swing.*;

public class Launcher extends JFrame
{
    public Launcher()
    {
        JFrame frame = new JFrame("Hurricane Craft");
        frame.setVisible(true);
        frame.setSize(200, 200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JLabel label = new JLabel("Welcome to Hurricane Craft");
        JPanel panel = new JPanel();
        frame.add(panel);
        panel.add(label);

        JButton site = new JButton("Site");
        JButton forums = new JButton("Forums");
        panel.add(site);
        panel.add(forums);
    }

    public static void main(String[] args)
    {
        new Launcher();
    }
}

3 个答案:

答案 0 :(得分:2)

您可以使用以下代码从java打开网页,它将打开您的默认浏览器并使用提供的字符串/网址:

public void openWebPage(String url){
   try {         
     java.awt.Desktop.getDesktop().browse(java.net.URI.create(url));
   }
   catch (java.io.IOException e) {
       System.out.println(e.getMessage());
   }
}

要通过按钮调用此功能,只需为您的网站和论坛按钮添加ActionListener即可:

forum.addActionListener( new ActionListener()
{
    public void actionPerformed(ActionEvent e)
    {
        openWebPage("http://www.mywebsite.com/forum/");
    }
});

使用网站而不是论坛网址为您的网站制作另一个actionlistener,您就完成了!

答案 1 :(得分:1)

您可以在按钮上添加ActionListener,打开如下网页:

JButton site = new JButton("Site");
site.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
            java.awt.Desktop.getDesktop().browse("http://www.mysite.com");
        }
}

答案 2 :(得分:0)

使用上面的代码,您在 .browse 命令上给出了错误,提示“桌面类型中的方法浏览(URI)不适用于参数(字符串)” 要修复错误,请创建一个函数/方法,该函数/方法将采用字符串参数,在事件侦听器操作执行按钮中调用上述函数。

 <ng-container matColumnDef="header-row-{{i}}-group" *ngFor="let grouping of groupArr; let i = index">
        <mat-header-cell *matHeaderCellDef [style.text-align]="center" [attr.colspan]="2">
          {{grouping}}
        </mat-header-cell>
 </ng-container>

像这样调用方法。

public void createLink(String url){
       try {         
         java.awt.Desktop.getDesktop().browse(java.net.URI.create(url));
       }
       catch (java.io.IOException e) {
           System.out.println(e.getMessage());
       }
    }