JAVA菜鸟求助,想用实现输入一个ISBN实现多站点检索

noblebrad007 2022-05-28 08:02:03

多线程传参数出现了问题:

要不可以打开三个网站但数值都为空;

要不有数值但只能打开一个网站;

谢谢大神帮助!代码如下:

 

 

package TestThread;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Toolkit;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;


public class TestThread extends JFrame{
    public TestThread() {
        setTitle("美国常春藤联盟图书馆查询");
        setBounds(100, 100, 450, 300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        contentPane.setLayout(new BorderLayout(0, 0));
        setContentPane(contentPane);
        JTextField textField = new JTextField();
        contentPane.add(textField, BorderLayout.NORTH);
        textField.setColumns(10);
        JLabel lblNewLabel = new JLabel("请输入要查询的ISBN");
        contentPane.add(lblNewLabel, BorderLayout.CENTER);
        JButton btnNewButton = new JButton("检索");
        contentPane.add(btnNewButton, BorderLayout.SOUTH);
        btnNewButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                System.out.println(textField.getText());
                String ISBN = textField.getText();
                new OpenPageHarvard().start();;
                new OpenPagePenn().start();
                new OpenPageYale().start();            
            }
        });
    }
    
    
    public static String ISBN;
    static class OpenPageHarvard extends Thread{            
        public void OpenPageHarvard(String ISBN){
            try {        
                String urlHarvard = "https://hollis.harvard.edu/"
                        + "primo-explore/search?search-banner-"
                        + "input="+ISBN+"&tab=everything&vid=HVD2"
                        + "&lang=en_US&offset=0&query=any,contains,"+ISBN;    
                java.net.URI uriHarvard = java.net.URI.create(urlHarvard);
                java.awt.Desktop dp = java.awt.Desktop.getDesktop();
                if (dp.isSupported(java.awt.Desktop.Action.BROWSE)) {
                dp.browse(uriHarvard);// 获取系统默认浏览器打开链接
                }
                } catch (java.lang.NullPointerException e) {
                // 此为uri为空时抛出异常
                e.printStackTrace();
                } catch (java.io.IOException e) {
                // 此为无法获取系统默认浏览器
                e.printStackTrace();
                }        
        }
        public void run() {
            OpenPageHarvard(ISBN);
            System.out.println("我是线程1");
                //System.out.println("Hello MyThread1");
        }
    }
    
    static class OpenPagePenn extends Thread{    
        public void OpenPagePenn(String ISBN) {                
            try {        
                String urlPenn = "https://franklin.library.upenn.edu/bento?q="+ISBN;    
                java.net.URI uriPenn = java.net.URI.create(urlPenn);
                java.awt.Desktop dp = java.awt.Desktop.getDesktop();
                if (dp.isSupported(java.awt.Desktop.Action.BROWSE)) {
                dp.browse(uriPenn);// 获取系统默认浏览器打开链接
                }
                } catch (java.lang.NullPointerException e) {
                // 此为uri为空时抛出异常
                e.printStackTrace();
                } catch (java.io.IOException e) {
                // 此为无法获取系统默认浏览器
                e.printStackTrace();
                }        
        }
        public void run() {
            OpenPagePenn(ISBN);
            System.out.println("我是线程2");
                //System.out.println("Hello MyThread2");
        }
    }
    
    static class OpenPageYale extends Thread {
        public void OpenPageYale(String ISBN) {
            try {        
                String urlPenn = "https://search.library.yale.edu/quicksearch?q="+ISBN+"&commit=Search";    
                java.net.URI uriPenn = java.net.URI.create(urlPenn);
                java.awt.Desktop dp = java.awt.Desktop.getDesktop();
                if (dp.isSupported(java.awt.Desktop.Action.BROWSE)) {
                dp.browse(uriPenn);// 获取系统默认浏览器打开链接
                }
                } catch (java.lang.NullPointerException e) {
                // 此为uri为空时抛出异常
                e.printStackTrace();
                } catch (java.io.IOException e) {
                // 此为无法获取系统默认浏览器
                e.printStackTrace();
                }              
        }
        public void run() {
            OpenPageYale(ISBN);
            System.out.println("我是线程3");
        }
    }    

    public static void main(String[] args) {

        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    TestThread frame = new TestThread();
                    frame.setVisible(true);
                    frame.setResizable(false);;
                    Toolkit defaultToolkit=Toolkit.getDefaultToolkit();
                    Dimension screenSize=defaultToolkit.getScreenSize();
                    frame.setLocation((screenSize.width-400)/2,(screenSize.height-300)/2);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });            
    }
}

...全文
136 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

291,254

社区成员

发帖
与我相关
我的任务
社区描述
一个有温度的 Java 爱好者社区,区长是 CSDN 头牌沉默王二,30万+读者,博客访问量 1000万+,全网屈指可数的博主~
社区管理员
  • 沉默王二
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧