Как получить изображение обложки книги из google-books API в java? - PullRequest
0 голосов
/ 01 ноября 2019

Я делаю небольшую систему управления библиотекой, используя Java Swing и API Google Книг . Я просто хочу отобразить обложку книги в виде значка JLabel . Для этого мне нужен URL изображения, который можно взять из классов и функций google-books . Для этого я сначала напечатал строку, которую я получаю-- (String imagePath = imageLinks.getMedium ()). Но я ничего не получаю . Почему это происходит? Что-то не так с моим кодом? Изображения для демонстрации: нажмите здесь !

public class JFrame0 extends javax.swing.JFrame{
private static final String APPLICATION_NAME = "gpj.lms";
public static String title = null;
public static String author = null;
public static String imagePath = null;
public static URL imageUrl;
public static BufferedImage image;
//public static Volume.VolumeInfo.ImageLinks imageLinks;
public static ImageLinks imageLinks;
private static final NumberFormat CURRENCY_FORMATTER = NumberFormat.getCurrencyInstance();
private static final NumberFormat PERCENT_FORMATTER = NumberFormat.getPercentInstance();

private static void queryGoogleBooks(JsonFactory jsonFactory, String query) throws Exception 
{
ClientCredentials.errorIfNotSpecified();
final Books books = new Books.Builder(GoogleNetHttpTransport.newTrustedTransport(), jsonFactory, null)
.setApplicationName(APPLICATION_NAME)
.setGoogleClientRequestInitializer(new BooksRequestInitializer(ClientCredentials.API_KEY))
.build();
List volumesList = books.volumes().list(query);
volumesList.setFilter("ebooks");
Volumes volumes = volumesList.execute();

if (volumes.getTotalItems() == 0 || volumes.getItems() == null) 
    {
        Component frame = null;
        JOptionPane.showMessageDialog(frame, "No matches found.");
    }
for (Volume volume : volumes.getItems()) 
    {
        Volume.VolumeInfo volumeInfo = volume.getVolumeInfo();
        //imageLinks = volume.getVolumeInfo().getImageLinks();
        Volume.SaleInfo saleInfo = volume.getSaleInfo();
        title = volumeInfo.getTitle();
        author = Arrays.toString(volumeInfo.getAuthors().toArray());
        imageLinks = volumeInfo.getImageLinks();
        imagePath = imageLinks.getMedium();
        //imageUrl = new URL(imagePath);
        //image = ImageIO.read(imageUrl);
    }}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String ISBN = jTextField5.getText();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();

try 
{

    queryGoogleBooks(jsonFactory, ISBN);
    // Success!
    jTextField4.setText(title);
    jTextField7.setText(author);
    jTextField6.setText(imagePath);
    //jLabel6.setIcon((Icon) image);
} 
catch (IOException e) 
{
    JOptionPane.showMessageDialog(null,e);
} 
catch (Exception ex) 
{
    Logger.getLogger(JFrame0.class.getName()).log(Level.SEVERE, null, ex);
}}
}

Я ожидаю, что jTextField6 (текстовое поле для изображенияURL) должен распечатать изображение URL. Но это показывает пустым.

...