JButton ActionListener集成问题

kex 发布于 2019-03-09 actionlistener 最后更新 2019-03-09 14:42 4 浏览

我对Java比较陌生,最近我一直在研究基于GUI的HTML解析器。 界面很简单,包括:

  1. 用于输入搜索词的JTextField
  2. JButton b1启动搜索
  3. JButton b2退出
  4. JButton b3使用cmd prmt在浏览器中显示网址。
问题出现在b3中。 这是一个代码示例:
while (mstyle2.find()) 
{
    String s=mstyle2.group(0);
    String pattern = "(?i)(<cite.*?>)(.+?)(</cite>)";
    String updated = s.replaceAll(pattern, "$2"); 
    String pattern2 = "(?i)(<b>)(.+?)(</b>)";
    String updated2 = updated.replaceAll(pattern2, "$2"); 
    String pattern3 = "(http://)";
    boolean c=true;
    String updated32 = updated2.replaceAll(pattern3, ""); 
    String pattern32 = "(https://)";
    final String updated3 = updated32.replaceAll(pattern32,"");
try {
        URL url2 = new URL("http://"+updated3);
        URLConnection conne = url2.openConnection();
        conne.connect();
    } catch (MalformedURLException e) {
        c=false;
    } catch (IOException e) {
        c=false;//checks validity of url 
    }
if(c) {
        Process p=Runtime.getRuntime().exec("cmd /c start http://"+updated3);
    }
}
这个想法是,只有在按下b3时才应执行以下命令行。否则循环将不会执行,并保持该行,直到按下按钮。
Process p=Runtime.getRuntime().exec("cmd /c start http://"+updated3);
但是,我无法找到任何可行的方法来正确实施ActionListener方法,以实现这一点。 在我的大部分尝试中,一旦按下b3,所有链接立即打开(因此打败了b3的目的),而不是一次一个地点击b3。
已邀请:

qodio

赞同来自:

解决方案 JButtons有一个名为addActionListener()的方法。此方法允许您将runnable附加到按钮,因此仅在单击时调用代码。

 b3.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e)
      {
           // Your code here!
      }
 });
这是做什么的? 那么这是为你的按钮添加一个新的ActionListener对象。但是,ActionListener有一个需要实现的抽象方法actionPeformed。您只是在构造函数中提供代码。